Я пытаюсь отобразить несколько изображений с использованием базы данных 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:
Против:
Для получения дополнительной информации о базовых кодированных изображениях: