Cóż... odpowiedzią na pytanie, dlaczego zrobi to, co opisałeś, jest użycie funkcji header(). W PHP nie możesz drukować niczego przed wywołaniem nagłówka, ponieważ nakazuje to serwerowi WWW przygotować nagłówek treści. Zwykle całkowicie zastępują one całą zawartość.
Po drugie, chciałbym wspomnieć, że przechowywanie obrazów w bazie danych jest zwykle złym pomysłem z dwóch powodów.
- Ma znaczący wpływ na wydajność i renderowanie.
- Musisz napisać kod renderujący dane obiektu blob, a nie tylko wyświetlać sam obraz.
Preferowaną metodą prezentacji obrazów w oparciu o bazę danych jest przechowywanie obrazów w katalogu, a ich nazw plików w bazie danych. Teraz, gdy chcesz wyświetlić obrazy, wystarczy odpytać bazę danych o nazwy plików, które chcesz wyświetlić, a następnie po prostu dołączyć nazwę pliku do atrybutu HTML.
Wykonanie jest również znacznie szybsze.
Chciałbym również zauważyć, że jeśli chcesz, aby skrypt faktycznie wykonał twoje renderowanie, chciałbyś, aby skrypt zdefiniował twój nagłówek, a następnie powtórzył lub wydrukował obraz blob po zdefiniowaniu nagłówka.
Zwróć uwagę, że kiedy tworzysz swój tag html ... w atrybucie src, możesz uczynić go czymś bardziej podobnym do tego;
<img src="image.php?id=<some_number>">
Teraz twój plik image.php wyrzuci dane obrazu do tagu.