Отобразить несколько фото для конкретной записи из БД PHP

не могу разобраться, как вывести несколько фотографий для конкретной записи. Выводится только одно изображение. Есть две таблицы: products со списком товаров и gallery со списком изображений.

<?php
require $_SERVER['DOCUMENT_ROOT'].'/config/safemysql.class.php';

$db = new safeMysql();
$id = isset($_GET['id']) ? $_GET['id'] : false;
$sql  = "SELECT products.*, gallery.* FROM products INNER JOIN gallery on products.id=gallery.id_products WHERE id_products=$id ";
$data = $db->getAll($sql);
$rows = $db->getOne("SELECT FOUND_ROWS()");

?>

  <? foreach ($data as $row): ?>
  
      <div class="product__thumb  product__thumb--active">
        <img class="product__thumb-image" src="content/products/<?=$row['img']?>" width="71" height="47" alt="" />
      </div>
      
  <? endforeach ?>


Ответы (1 шт):

Автор решения: Ипатьев

В первую очередь, safeMysql используется неправильно Да и вообще ошибки на каждой строчке

а список картинок можно получить функцией group_concat

if (!isset($_GET['id']) ||  !ctype_digit($_GET['id']) {
    die('invalid request');
}
$db = new safeMysql();
$sql  = "SELECT p.*, group_concat(g.img) 
         FROM products p INNER JOIN gallery g on p.id=g.id_products 
         WHERE id_products=?i GROUP BY p.id";
$row = $db->getRow($sql, $_GET['id']);

?>


<?php foreach (explode(",",$row['img']) as $img): ?>

  <div class="product__thumb  product__thumb--active">
    <img class="product__thumb-image" src="content/products/<?=$img>" width="71" height="47" alt="" />
  </div>
<?php endforeach ?>

Либо, если это очень сложно для понимания, то просто запросить картинки отдельным запросом

→ Ссылка