我怎么能在PHP中显示GROUP_CONCAT值

时间:2018-06-18 09:25:27

标签: php sql pdo

sqlQueryImage ThisWhatIgetinPHP

我试过这个,但它一直向我显示每篇文章的第一张图片,我不知道如何为一篇文章显示多张图片

$result = $db->prepare("SELECT article.titreArticle, article.textArticle,
    article.idArticle, article.dateArticle, GROUP_CONCAT(images.images) AS IMG
    FROM article LEFT JOIN images
        ON article.idArticle = images.idArticle
    GROUP BY article.idArticle");
    for ($i = 0;
    $row = $result->fetch();
    $i++){
    ?>
     <h1 style="text-align: center"><?php echo $row['idArticle']; ?></h1>
        <hr>

        <img style="width: 300px" src="images/<?php if($row ['IMG'] !=null ) {
            $value = $row['IMG'];
        }

        $values = explode(",", $value);
        echo $values[0];

       ?>">        

1 个答案:

答案 0 :(得分:2)

GROUP_CONCAT的目的是返回每个GROUP中的每个值,并在同一个字段中连接。

您希望某些群组有多张图片,但只显示一张图片,第一张图片遇到:echo $values[0];

如果要显示组的所有图像,则必须在图像阵列上进行第二次循环,以打印每个元素。

所以你的主循环在行上,第二个循环在图像上。

试试这个:

<?php

$result = $db->prepare("SELECT article.titreArticle, article.textArticle,
    article.idArticle, article.dateArticle, GROUP_CONCAT(images.images) AS IMG
    FROM article LEFT JOIN images
        ON article.idArticle = images.idArticle
    GROUP BY article.idArticle");

    // FIRST LOOP ON ROWS
    for ($i = 0; $row = $result->fetch(); $i++){
    ?>
     <h1 style="text-align: center"><?php echo $row['idArticle']; ?></h1>
        <hr>

        <?php

        $images = ""; // we will store all our images for this row here (if any)

        if($row ['IMG'] !=null ) {
                $value = $row['IMG'];
                $values = explode(",", $value);

                // SECOND LOOP ON IMAGES
                foreach($values, $imgsrc){
                    $images .= '<img style="width: 300px" src="images/'.$imgsrc.'">';
                }

                echo $images; // output all images
        }


        ?>