簡體   English   中英

Foreach 循環不正確顯示從數據庫中獲取數據

[英]Foreach loop don't show fetch data from database correctly

我在數據庫中有兩個表(詳細信息和圖像),我正確地獲取了第一個表(詳細信息)。詳細信息有一行名稱是代碼,我想使用詳細信息表中的代碼元素獲取圖像表。

表的詳細信息是這樣的:

$response = array();

$sql = " SELECT * FROM `details` ORDER BY `id` DESC ";
$run = $connect->prepare($sql);
$run->execute();
$record = $run->fetchAll(PDO::FETCH_ASSOC);
$response['res'] =[$record];
echo json_encode($response,JSON_PRETTY_PRINT);

響應是這樣的:

{
    "res": [
        [
            {
                "id": "1",
                "title": "bucher",
                "name": "jack sib",
                "start": "7am to 6pm",
                "details": "gtgtty rtrtrt",
                "user": "example@yahoo.com",
                "code": "ulv1mx8wztcyvf55ns4hlcgr11lzktyh",
                "time": "2020-08-21 16:24:19"
            },
            {
                "id": "2",
                "title": "super market",
                "name": "alibaba",
                "start": "6 Am to 6 Pm",
                "details": "everything is good and get better",
                "user": "example2@yahoo.com",
                "code": "umtyw95hu4voe49rz95ej0cftmnglom1",
                "time": "2020-08-17 17:26:40"
            }
}

一切都很好而且正確,但是當我想從數據庫中獲取圖像並且我想用特殊代碼顯示每張圖像時,它只顯示一張帶有代碼的圖像。

我寫的代碼是這樣的:

foreach ($record as $row){
        $sqlImage = " SELECT * FROM `image` WHERE code= ? LIMIT 1 ";
        $runImage = $connect->prepare($sqlImage);
        $runImage->bindValue(1, $row['code']);
        $runImage->execute();
        $recordImage = $runImage->fetchAll(PDO::FETCH_ASSOC);
    }

響應是:

{
    "advert": [
        [
            {
                "id": "1",
                "title": "bucher",
                "name": "jack sib",
                "start": "7am to 6pm",
                "details": "gtgtty rtrtrt",
                "user": "example@yahoo.com",
                "code": "ulv1mx8wztcyvf55ns4hlcgr11lzktyh",
                "time": "2020-08-21 16:24:19"
            },
            {
                "id": "2",
                "title": "super market",
                "name": "alibaba",
                "start": "6 Am to 6 Pm",
                "details": "everything is good and get better",
                "user": "example2@yahoo.com",
                "code": "umtyw95hu4voe49rz95ej0cftmnglom1",
                "time": "2020-08-17 17:26:40"
            }
        ],
        [
            {
                "id": "1",
                "user": "example2@yahoo.com",
                "url": "..\/public\/uploadPic\/cb49f60092bb9b28e69487171208a0d09.jpg",
                "token": "umtyw95hu4voe49rz95ej0cftmnglom1"
            }
        ]
    ]
}

第二張圖片不顯示,我不知道為什么。

這可能會在單個查詢中獲取想要的結果,包括特定代碼的圖像(如果存在)。 否則,它將在image表列中返回NULL

SELECT details.*, image.* FROM details LEFT JOIN details 
ON image.code = details.code ORDER BY details.id DESC

請注意,您正在從image表中提取所有數據,這似乎是不必要的,因為您已經擁有第一個表中的代碼並且只需要圖像 URL 和令牌。

您可以將查詢重寫為僅 append 第二個表中的圖像:

SELECT details.*, image.url, image.token FROM details LEFT JOIN details 
ON image.code = details.code ORDER BY details.id DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM