Mysql
 sql >> Database >  >> RDS >> Mysql

Come caricare immagini nel database MySQL utilizzando il codice PHP

Innanzitutto, dovresti controllare se la tua colonna immagine è di tipo BLOB !

Non so nulla della tua tabella SQL, ma se provo a farne una mia come esempio.

Abbiamo i campi id (int), image (blob) e image_name (varchar(64)).

Quindi il codice dovrebbe assomigliare a questo (supponiamo che l'ID sia sempre '1' e usiamo questa 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! :("; 
}

Stai sbagliando in molti modi. Non utilizzare le funzioni di MySQL:sono deprecate! Usa DOP o MySQLi . Dovresti anche pensare alla memorizzazione delle posizioni dei file su disco. Si ritiene che l'utilizzo di MySQL per la memorizzazione delle immagini sia una Bad Idea™. La gestione di tabelle SQL con big data come immagini può essere problematica.

Anche il tuo modulo HTML è fuori dagli standard. Dovrebbe assomigliare a questo:

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

Nota a margine:

Quando si gestiscono file e li si memorizza come BLOB, è necessario eseguire l'escape dei dati utilizzando mysql_real_escape_string() , altrimenti risulterà in un errore di sintassi.