Heim >Datenbank >MySQL-Tutorial >Wie füge ich BLOB-Bilddaten mit PHP ordnungsgemäß in MySQL ein?

Wie füge ich BLOB-Bilddaten mit PHP ordnungsgemäß in MySQL ein?

DDD
DDDOriginal
2024-12-13 18:03:11244Durchsuche

How to Properly Insert BLOB Image Data into MySQL Using PHP?

So fügen Sie Blobs in MySQL-Datenbanken mit PHP ein

Problembeschreibung

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.

Lösung 1: Explizite Verkettung

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) . "')";

Lösung 2: Bereinigung und Escape-Zeichen

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)) . "')";

Lösung 3: Vermeiden von Datenbankspeicherung für Bilder

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!

Stellungnahme:
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