Beim Versuch, Bilder in einer MySQL-Datenbank zu speichern, kann es bei einigen Benutzern zu einem Problem kommen, wo sich das Bild befindet nicht richtig eingesetzt. Diese Diskrepanz kann aufgrund eines Missverständnisses darüber entstehen, wie PHP Funktionsaufrufe innerhalb interpolierter Zeichenfolgen verarbeitet.
Im folgenden Code besteht die Absicht darin, die binären Bilddaten in der Datenbank zu speichern:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','file_get_contents($tmp_image)')";
Dieser Ansatz erstellt jedoch eine Zeichenfolge, die „file_get_contents($tmp_image)“ enthält, und nicht das eigentliche Bild Daten.
Um dieses Problem zu beheben, muss der Funktionsaufruf explizit innerhalb der Zeichenfolge verkettet werden:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
Jetzt sind die Bilddaten korrekt in den String interpoliert, bevor die Abfrage ausgeführt wird.
Die binären Bilddaten können Sonderzeichen wie einfache Anführungszeichen enthalten, die die SQL-Abfrage ungültig machen können. Um dies zu mildern, sollten die Daten vor der Interpolation maskiert werden:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
Es ist wichtig zu beachten, dass das Speichern großer Mengen an Bilddaten in einer Datenbank ineffizient sein kann . Ziehen Sie alternative Speicheroptionen in Betracht, z. B. das Speichern der Bildpfade in der Datenbank und der tatsächlichen Bilder in einem dedizierten Dateisystem oder Content Delivery Network (CDN).
Das obige ist der detaillierte Inhalt vonWie kann ich BLOBs (Bilder) mit PHP erfolgreich in MySQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!