sql >> Base de Datos >  >> RDS >> Mysql

Cómo cargar imágenes en la base de datos MySQL usando código PHP

En primer lugar, debe verificar si su columna de imagen es de tipo BLOB !

No sé nada sobre su tabla SQL, pero intentaré hacer la mía como ejemplo.

Tenemos campos id (int), image (blob) y image_name (varchar(64)).

Entonces, el código debería verse así (supongamos que el ID siempre es '1' y usemos 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! :("; 
}

Lo estás haciendo mal en muchos sentidos. No use funciones mysql, ¡están en desuso! Utilice PDO o MySQLi . También debe pensar en almacenar ubicaciones de archivos en el disco. Se cree que el uso de MySQL para almacenar imágenes es una mala idea™. El manejo de tablas SQL con grandes datos como imágenes puede ser problemático.

Además, su formulario HTML está fuera de los estándares. Debería verse así:

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

Nota al margen:

Al tratar con archivos y almacenarlos como BLOB, los datos deben escaparse usando mysql_real_escape_string() , de lo contrario, dará como resultado un error de sintaxis.