Heim >Datenbank >MySQL-Tutorial >Wie füge ich BLOB-Bilddaten mit PHP ordnungsgemäß in MySQL ein?
Beim Versuch, ein Bild in MySQL zu speichern, können Benutzer auf ein Problem stoßen Die Bilddaten werden nicht wie erwartet gespeichert, obwohl sie beim Drucken korrekt ausgegeben werden. Dies liegt daran, dass die PHP-Funktion file_get_contents() als String innerhalb der SQL-Abfrage behandelt und nicht ausgeführt wird.
Eine Lösung besteht darin, das Ergebnis von file_get_contents() zu verketten. mit der SQL-Abfragezeichenfolge, sodass sie als Teil der Abfrage ausgeführt werden kann. Der folgende Code veranschaulicht diesen Ansatz:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . file_get_contents($tmp_image) . "')";
Um SQL-Injection-Schwachstellen zu verhindern, ist es wichtig, Binärdaten, die Sonderzeichen enthalten, zu maskieren, bevor sie in das eingefügt werden Datenbank. Dies kann mit der Funktion mysql_escape_string() erreicht werden. Der aktualisierte Code wäre:
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
Als Best Practice wird empfohlen, die Speicherung großer Binärdaten, wie z. B. Bilder, nicht direkt in MySQL zu vermeiden Datenbanken. Erwägen Sie stattdessen, sie in separaten Dateien zu speichern und ihre Pfade innerhalb der Datenbank zu referenzieren. Dieser Ansatz verbessert die Datenbankleistung und -flexibilität.
Das obige ist der detaillierte Inhalt vonWie füge ich BLOB-Bilddaten mit PHP ordnungsgemäß in MySQL ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!