Я прочитал все возможные вопросы о 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"/>
Попробуйте ниже
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