Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So laden Sie Bilder mit PHP-Code in die MySQL-Datenbank hoch

Zuerst sollten Sie überprüfen, ob Ihre Bildspalte vom Typ BLOB ist !

Ich weiß nichts über Ihre SQL-Tabelle, aber ich versuche, meine eigene als Beispiel zu erstellen.

Wir haben die Felder id (int), image (blob) und image_name (varchar(64)).

Der Code sollte also so aussehen (angenommen, die ID ist immer '1' und verwenden wir diese mysql_query):

$image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); //SQL Injection defence!
$image_name = addslashes($_FILES['image']['name']);
$sql = "INSERT INTO `product_images` (`id`, `image`, `image_name`) VALUES ('1', '{$image}', '{$image_name}')";
if (!mysql_query($sql)) { // Error handling
    echo "Something went wrong! :("; 
}

Du machst es in vielerlei Hinsicht falsch. Verwenden Sie keine MySQL-Funktionen - sie sind veraltet! Verwenden Sie PDO oder MySQLi . Sie sollten auch darüber nachdenken, Dateispeicherorte auf der Festplatte zu speichern. Die Verwendung von MySQL zum Speichern von Bildern wird als Bad Idea™ angesehen. Der Umgang mit SQL-Tabellen mit Big Data wie Bildern kann problematisch sein.

Auch Ihr HTML-Formular entspricht nicht den Standards. Es sollte so aussehen:

<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>

Nebenbemerkung:

Beim Umgang mit Dateien und deren Speicherung als BLOB müssen die Daten mit mysql_real_escape_string() , andernfalls führt dies zu einem Syntaxfehler.