Как отобразить несколько изображений (BLOB-объектов) из MySQL с помощью PHP? - PullRequest
1 голос
/ 22 апреля 2011

Я пытаюсь отобразить несколько изображений с помощью 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'];
}

Ответы [ 2 ]

12 голосов
/ 22 апреля 2011

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

image.php

header('Content-type: image/jpg');

// DataBase query and processing here...

echo $data['myImage'];

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

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

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

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

1 голос
/ 21 марта 2015

Просто чтобы упомянуть возможность встраивания изображений непосредственно в 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:

  • Браузеру не нужнозагрузка изображений по дополнительному сетевому соединению
  • Можно запросить и отобразить несколько изображений за один запрос

Con:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...