Heim >Datenbank >MySQL-Tutorial >Wie füge ich Bild-Blobs mit PHP ordnungsgemäß in MySQL ein?

Wie füge ich Bild-Blobs mit PHP ordnungsgemäß in MySQL ein?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 15:53:09203Durchsuche

How to Properly Insert Image Blobs into MySQL Using PHP?

Einfügen von Blobs in MySQL-Datenbanken mit PHP

Wenn ein Bild in einer MySQL-Datenbank gespeichert werden muss, kann es zu Schwierigkeiten kommen. Hier ist die Tabellenstruktur:

mysql> describe ImageStore;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| ImageId | int(11)  | NO   | PRI | NULL    |       |
| Image   | longblob | NO   |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)

Die folgende Abfrage versucht, ein Bild einzufügen, speichert jedoch nicht die erwarteten Binärdaten:

$tmp_img = $this->image['tmp_name'];
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','file_get_contents($tmp_image)')";
mysql_query($sql); 

Das Problem liegt in der Verkettung der Funktion Rufen Sie file_get_contents($tmp_image) innerhalb der Zeichenfolge auf. Die Variableninterpolation von PHP funktioniert nur für Variablen, nicht für Funktionsaufrufe. Hier sind drei Lösungen:

Lösung 1:Explizite Verkettung verwenden:

$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";

Lösung 2:Binärdaten für MySQL-Abfrage bereinigen:

$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";

Hinweis: Speichern Sie große Bilder lieber nicht in MySQL Datenbanken wenn möglich.

Das obige ist der detaillierte Inhalt vonWie füge ich Bild-Blobs mit PHP ordnungsgemäß in MySQL ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn