Heim > Backend-Entwicklung > PHP-Tutorial > Warum kann mein PHP-Code keine Bilder in eine MySQL-BLOB-Spalte einfügen?

Warum kann mein PHP-Code keine Bilder in eine MySQL-BLOB-Spalte einfügen?

Mary-Kate Olsen
Freigeben: 2024-11-30 09:33:11
Original
130 Leute haben es durchsucht

Why is my PHP code failing to insert images into a MySQL BLOB column?

Einfügen von BLOBs in MySQL-Datenbanken mit PHP: Fehlerbehebung bei der Bildspeicherung

Beim Versuch, ein Bild in einer MySQL-Datenbank zu speichern, können Probleme auftreten wenn die bereitgestellte Abfrage die Daten nicht korrekt speichert. Lassen Sie uns das Problem untersuchen und mögliche Lösungen erkunden.

Problem:

Angesichts der bereitgestellten Tabellenstruktur mit den Spalten ImageId (Ganzzahl) und Image (Longblob) die folgende Abfrage wurde verwendet:

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

Obwohl beim Drucken das erwartete Ergebnis von file_get_contents($tmp_image) erhalten wurde Wert, die Daten werden nicht in der Datenbank gespeichert.

Lösungen:

Lösung 1: Variableninterpolation

Die Die von Ihnen erstellte Abfrage ist anfällig für eine häufige PHP-Falle. Wenn Sie eine Variable file_get_contents($tmp_image) in eine Zeichenfolge in doppelte Anführungszeichen einbetten, führt PHP die Funktion nicht automatisch aus. Stattdessen wird es als Literalzeichenfolge behandelt und somit „file_get_contents($tmp_image)“ in die Datenbank geschrieben und nicht der zurückgegebene Wert.

Um das Ergebnis von file_get_contents($tmp_image) korrekt zu verketten, müssen Sie Folgendes tun Verlassen Sie die Zeichenfolge in doppelten Anführungszeichen:

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

Lösung 2: Bereinigung

Wenn die Binärdaten einfache Anführungszeichen (') enthalten, wird die Abfrage ungültig. Um dies zu verhindern, bereinigen Sie die Daten vor dem Einfügen mit mysql_escape_string:

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

Lösung 3: Alternative Speicherung

Das Speichern großer Binärdaten (BLOBs) in relationalen Datenbanken kann ineffizient sein. Erwägen Sie alternative Speicheroptionen wie separate Dateien oder Cloud-Speicherdienste, die für die Verwaltung binärer Daten konzipiert sind.

Das obige ist der detaillierte Inhalt vonWarum kann mein PHP-Code keine Bilder in eine MySQL-BLOB-Spalte einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage