Ну ... ответ на вопрос, почему он будет делать то, что вы описали, заключается в использовании вами функции header (). В PHP вы ничего не можете напечатать до вызова заголовка, поскольку это заставляет веб-сервер подготовить заголовок содержимого. Обычно они полностью заменяют весь контент.
Во-вторых, я хотел бы отметить, что хранение изображений в базе данных обычно является плохой идеей по двум причинам.
- Это оказывает существенное влияние на производительность и рендеринг.
- Вы должны написать код для отображения данных BLOB, а не просто для отображения самого изображения.
Предпочтительным способом представления изображений на основе базы данных будет то, что вы будете хранить изображения в каталоге, а их имена файлов - в базе данных. Теперь, когда вы хотите отобразить изображения, вам просто нужно запросить в БД имена файлов, которые вы хотите отобразить, а затем просто включить имя файла в атрибут HTML.
Выполнение также намного быстрее.
Кроме того, я хотел бы отметить, что если вы хотите, чтобы скрипт фактически выполнял рендеринг, вы бы хотели, чтобы этот скрипт определял ваш заголовок, а затем отображал или выводил на экран изображение большого двоичного объекта после того, как вы определите заголовок.
Обратите внимание, что при создании html-тега ... который в атрибуте src вы бы сделали его более похожим на это;
<img src="image.php?id=<some_number>">
Теперь ваш файл image.php будет выплевывать данные изображения в тег.