Bilder mit PHP in eine MySQL-Datenbank hochladen
Das Einfügen von Bildern in eine MySQL-Datenbank mit PHP erfordert mehrere Schritte. Lassen Sie uns die Probleme im von Ihnen bereitgestellten Code beheben:
1. Struktur der Datenbanktabelle:
Stellen Sie sicher, dass Ihre Datenbanktabelle über eine Spalte verfügt, die als BLOB- oder MEDIUMBLOB-Typ definiert ist, um die Bilddaten zu speichern.
2. Vorbereitete Anweisungen:
Anstatt die veraltete Funktion mysql_query() zu verwenden, wechseln Sie zu vorbereiteten Anweisungen mit PDO oder MySQLi. Vorbereitete Anweisungen verhindern SQL-Injection-Schwachstellen.
3. Richtige Bildverarbeitung:
Der aktuelle Code ruft die Bilddaten direkt aus der temporären Datei ab. Dies ist ein Sicherheitsrisiko. Verwenden Sie stattdessen file_get_contents() mit der Option FILE_BINARY, um sicherzustellen, dass der Binärinhalt ordnungsgemäß verarbeitet wird.
4. Bereinigung:
Bereinigen Sie die Bilddaten mit addslashes() oder mysqli_real_escape_string(), um SQL-Injection zu verhindern.
5. Korrekte Einfügeabfrage:
Die Einfügeabfrage sollte mit der Tabellenstruktur übereinstimmen und die Daten entsprechend bereinigen. Hier ist eine korrigierte Version:
$stmt = $mysqli->prepare("INSERT INTO product_images (id, image, image_name) VALUES (?, ?, ?)"); $stmt->bind_param("sis", 1, $image, $image_name); $image = file_get_contents($_FILES['image']['tmp_name'], FILE_BINARY); $image_name = addslashes($_FILES['image']['name']); if ($stmt->execute()) { echo "Image uploaded successfully"; } else { echo "Error: " . $mysqli->error; }
6. HTML-Formular:
Das HTML-Formular sollte das Attribut enctype="multipart/form-data" verwenden, das die Übertragung von Binärdaten in der Anfrage ermöglicht. Verwenden Sie außerdem ein geeignetes schließendes Tag für das