# Mit PHP BLOB aus MySql Datenbank auslesen



## gander (19. April 2011)

Hallo Leute,

ich krieg das irgendiwe nicht hin das es mir das BLOB aus der Datenbank holt und anzeigt.
In die Datenbank speichern klappt!

```
<?php

    error_reporting(E_ALL);

	if(isset($_POST['picid'])){
		
    
        $link = mysql_connect("localhost", "", "") or die("Could not connect: " . mysql_error());
 
       
        mysql_select_db("testdb") or die(mysql_error());
 
        
        $sql = "SELECT image, image_type FROM testblob WHERE image_id='".mysql_real_escape_string($_POST['picid'])."'";
 
 		
		$result = mysql_query($sql) or die("Invalid query: " . mysql_error());;
		$row = mysql_fetch_object($result);
 
 		
		header( "Content-type: $row->image_type");
		echo $row->image;
	
        mysql_close($link);
   
} else { echo 'picid nicht gesetzt'; }

    
?>
```

das ist eigentlich schon der ganze code.
Im Firefox krieg ich immer die Meldung:
Die Grafik "http://localhost/Test/showpic.php" kann nicht angezeigt werden, weil sie Fehler enthält.

In Opera zeigt er mir nur das an:
http://s1.directupload.net/file/d/2499/q6zpu7r8_png.htm


weiß jemand was ich da falsch gemacht haben könnte?
hab schon gegoogelt aber leider nix gefunden....


mfg gander


----------



## Yaslaw (19. April 2011)

ruf mal das Script direkt auf. Ohne einbettung in deine Seite.
Dann siehst du eher eine Fehlermeldung


----------



## gander (19. April 2011)

Danke für die schnelle Hilfe.
Also so zeigt es mir etwa 1/5 von dem Bild an. Kann es sein dass das Bild zu groß ist und so nur ein teil des Bildes in die Datenbanke gespeichert wird oder woran könnte das liegen?
EDIT: ok tatsächlich zeigt es mir ein kleineres Bild komplett an.

Und wieso läuft der code so aber nicht wenn er in  der Seite eingebettet ist?


----------



## Yaslaw (19. April 2011)

wenn deine Datei in html eingebetet ist, dann erwartet der Browser ein Bild und keine Text-Message

```
<img href="myPicture.php" />
```

Wenn nun also myPicture.php kein Bild-Header sendet, sondern ein Textfile mit der Fehlermeldung generiert, dann kann der im img-Tag nicht angezeigt werden.

Wie hast du den Code den eingebunden?


----------



## gander (19. April 2011)

ich poste einfach mal den ganzen code der showpic.php :


```
<?php
	include "form.php";
?>

Bitte geben Sie die ID des Bildes ein das Sie angezeigt bekommen wollen: 
	<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
		<input type="text" name="picid">
        <input type="submit" name="show" value="Bild anzeigen" />
  	</form>
    
<?php

    error_reporting(E_ALL);

	if(isset($_POST['picid'])){
		
   
        $link = mysql_connect("localhost", "root", "") or die("Could not connect: " . mysql_error());
 
        
        mysql_select_db("testdb") or die(mysql_error());
 
        
        $sql = "SELECT image, image_type FROM testblob WHERE image_id='".mysql_real_escape_string($_POST['picid'])."'";
 
 		
		$result = mysql_query($sql) or die("Invalid query: " . mysql_error());
		$row = mysql_fetch_object($result);
 
 		
		header( "Content-type: $row->image_type");
		echo $row->image; 
        
        mysql_close($link);
   
	} else { echo 'picid nicht gesetzt'; }

    
?>
```

die form.php ist einfach das "gerüst" der seite....

also ist der code ja in html eingebettet oder?


----------



## Yaslaw (19. April 2011)

Und jetzt? Was sollen wir damit?


----------



## gander (19. April 2011)

sorry bin blutiger php anfänger...
dachte du meinest mit der frage wie ich den code eingebunden hab meinst du wie ich den code ins html eingebunden hab.
dann versteh ich deine frage nicht ganz wie ich den code eingebunden hab? könntest du mir das bitte etwas genauer erklären was damit gemeint ist?

mfg


----------



## Yaslaw (20. April 2011)

Wie rurfst du die PHP-Datei auf, die das Bild erzeugt


----------



## saftmeister (20. April 2011)

Wenn du das Script mittels <img>-Tag in die Seite einbaust, erwartet den Browser, das es sich um ein Bild handelt. Wenn du aber statt dessen ein HTML-Form ausgibst, kann der Browser es nicht darstellen.

Bessere Vorgehensweise wäre:

- Such-Form aus dem showpic.php-Script entfernen und in die Seite einbauen, die auch das Bild mittels img-Tag einbetten will
- Im showpic.php-Script abfragen, ob $_POST korrekt gefüllt ist (pic_id), wenn nicht ein 1px-großes Nichts darstellen, ansonsten reelles Bild ausgeben

Ich hoffe, das war einigermaßen verständlich.


----------

