как отображать несколько изображений (blob) из mysql с помощью php?

Я пытаюсь отобразить несколько изображений с использованием базы данных PHP и MySql, даже если я использую цикл while, я не получаю все изображения, я получаю только один, я имею в виду первый в таблице. В чем проблема ?

Я использую таблицу ID_IMAGE (int, pk, auto increment) и myImage (blob)

 $query = mysql_query("SELECT myImage FROM image"); while($data=mysql_fetch_array($query)) { header('Content-type: image/jpg'); echo $data['myImage']; } 

Возможным способом решения этой проблемы является наличие отдельного сценария для динамического вывода содержимого изображения, например. :

image.php

 header('Content-type: image/jpg'); // DataBase query and processing here... echo $data['myImage']; 

и называть его всякий раз, когда вам нужно показывать изображения, хранящиеся в вашей БД, например. внутри вашей петли:

 echo '<img src="image.php?id=' . $data['id'] . '">'; 

Но хранение изображений в базе данных будет зависеть от вашего сервера, и если они не очень малы или у вас есть все основания для этого, вы должны сохранить их физическое местоположение на диске.

Вы также можете использовать этот подход, если хотите скрыть местоположение изображения от своих пользователей или контролировать доступ, но есть лучшие и более быстрые альтернативы для этого случая.

Просто упомянуть о возможности встроить изображения непосредственно в html, закодировав их, вы можете использовать это:

 $query = "SELECT myImage FROM image"; if ($result = mysqli_query($link, $query)) { while ($row = mysqli_fetch_assoc($result)) { echo '<img src="data:image/jpg;base64,' . base64_encode($row['myImage']) . '">'; } } 

Pro:

  • Браузеру не нужно загружать изображения через дополнительное сетевое соединение
  • Вы можете запрашивать и отображать несколько изображений в одном запросе

Против:

  • Если изображение (изображения) большие и / или будет много изображений, страница будет медленной нагрузка
  • Кодирование изображения на base64 сделает его примерно на 30% больше.

Для получения дополнительной информации о базовых кодированных изображениях: