Heim >Backend-Entwicklung >PHP-Tutorial >Warum kann mein PHP-Code keine Bilder in eine MySQL-BLOB-Spalte einfügen?
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)')";
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) . "')";
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)) . "')";
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!