Отображать изображение на веб-сайте из базы данных mysql через php

#php #mysql

#php #mysql

Вопрос:

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

Вывод на веб-страницу

 <html>
<body>
<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "CSE";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$query = "SELECT * FROM upload WHERE id=1";
$result = $conn->query($query);
while($row = $result->fetch_assoc())
{

   header("Content-Type: image/png");
   echo '<img height="300" width="300" alt="logo" src="data:image;base64,'.$row["name"].'">'; 
}
$conn->close();


?>

</body>
</html>
  

Комментарии:

1. Сначала удалите объявление заголовка. Вы выводите не изображение в браузер, вы выводите HTML. И вы не можете отправлять заголовки после того, как вы уже отправили содержимое в браузер.

2. И то, что вы показали, является PHP-файлом, а не выводом на веб-странице

Ответ №1:

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

Затем вам нужно преобразовать данные blob (двоичные данные) в base64:

 while($row = $result->fetch_assoc())
{
    echo '<img height="300" width="300" alt="logo" src="data:' . $row["type"] . ';base64,'.base64_encode($row["name"]).'">'; 
}
  

Это для отображения изображения встроенным на той же странице.

Редактировать: Чтобы сделать его более динамичным, я также добавил «тип» из базы данных. (поскольку вы его сохранили).

Комментарии:

1. Также добавлен «тип» из базы данных, чтобы сделать его более динамичным.