PHP показывает изображение как BLOB mysqli

Я прочитал все возможные вопросы о StackOverflow, я спросил всех людей, которых я знаю, и никто не может мне помочь. У меня есть таблица в базе данных:

CREATE TABLE IF NOT EXISTS `zdjecia` ( `id` int(11) NOT NULL, `imie_wlasciciela` varchar(50) NOT NULL, `zdjecie` blob NOT NULL, `nazwa` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 

Я прошу прощения за отсутствие английских переменных, но я хочу сохранить весь источник без изменений. imie_wlasciciela и nazwa не важны в моей проблеме. Итак, zdjecie – это двоичные данные изображения, а id – id.

У меня есть файл, который должен показывать изображение.

// single_image.php

 <?php if (isset($_GET['id'])) { include('../connect.php'); // connect to database $id = $_GET['id']; $ret = $conn->query("SELECT * FROM zdjecia WHERE id=$id"); $row = $ret->fetch_assoc(); header("Content-type: image/png"); echo $row['zdjecie']; // echo $row['nazwa']; // correct the result. } ?> 

И в моем URL-адресе браузера я вставляю … / single_image.php? Id = 8

Моя проблема заключается не в отображении изображений, у меня в базе данных несколько изображений. Я могу загрузить его / phpmyadmin в XAMPP, и это правильное изображение, но моя страница не отображает его правильно, каждый раз, когда я вижу значок сломанного изображения.

Файл single_image.php установлен на no-bomb и Code-Страница 1250 (Central European).

Когда я проверяю результат на $row['nazwa'] и прокомментировал header("Content-type...") он показывает правильный varchar(50) из базы данных.

Я использую его, как написано несколько строк выше, или в html, <img src="single_image.php?id=8"/>

Related of "PHP показывает изображение как BLOB mysqli"

Попробуйте ниже

 echo '<img src="data:image/png;base64,'.base64_encode( $row['zdjecie'] ).'"/>'; 

Для лучшего обслуживания вы можете добавить data:image/png;base64 качестве заголовка, тогда только echo base64_encode( $row['zdjecie'] ) это будет работать для single_image.php?id=$id

  1. Не храните изображения в БД, это самоубийство.
  2. Не делайте свой код уязвимым для SQLinjection.
  3. Если вы должны хранить файлы в db, сохраните тип содержимого. Может быть, это не png? Или, может быть, у вас есть предупреждение / уведомление? Это сломает ваше изображение.