Problem:
Versuch, ein Bild in einer MySQL-Datenbank zu speichern, aber Die Einfügung ist nicht erfolgreich. Die Datenbanktabelle hat zwei Spalten: ImageId (int) und Image (longblob). Der PHP-Code ruft mit file_get_contents() die Bilddaten ab und fügt sie mithilfe der folgenden SQL-Abfrage in die Bildspalte ein:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
Die Bilddaten werden jedoch nicht in der Datenbank gespeichert.
Lösung:
Das Problem liegt in der Art und Weise, wie der PHP-Code die SQL-Abfrage erstellt. Der Funktionsaufruf file_get_contents() ist in einfache Anführungszeichen in der Abfragezeichenfolge eingeschlossen, was bedeutet, dass die eigentlichen Bilddaten nicht eingefügt werden. Um dieses Problem zu beheben, sollte die Variableninterpolationsfunktion von PHP verwendet werden:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
Um sicherzustellen, dass die Binärdaten keine Zeichen enthalten, die die SQL-Abfrage beschädigen könnten, wird außerdem empfohlen, die Daten mit zu bereinigen die Funktion mysql_escape_string():
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_real_escape_string(file_get_contents($tmp_image)) . "')";
Zusätzlich Überlegungen:
Das Speichern großer Binärdaten in Datenbanken kann zu Leistungsproblemen führen. Erwägen Sie die Verwendung eines separaten Speichermediums, z. B. eines Dateisystems oder eines Cloud-Speicherdienstes, für Bilder und andere große Objekte.
Das obige ist der detaillierte Inhalt vonWie füge ich mit PHP erfolgreich Blobs (Bilder) in MySQL ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!