Tout d'abord, vous devez vérifier si votre colonne image est de type BLOB !
Je ne sais rien de votre table SQL, mais si je vais essayer de faire la mienne comme exemple.
Nous avons des champs id
(entier), image
(blob) et image_name
(varchar(64)).
Donc, le code devrait ressembler à ceci (en supposant que l'ID est toujours '1' et utilisons ceci 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! :(";
}
Vous le faites mal à bien des égards. N'utilisez pas les fonctions mysql - elles sont obsolètes ! Utilisez PDO ou MySQLi . Vous devriez également penser à stocker les emplacements des fichiers sur le disque. L'utilisation de MySQL pour stocker des images est considérée comme une mauvaise idée ™. La gestion d'une table SQL avec des données volumineuses telles que des images peut être problématique.
De plus, votre formulaire HTML n'est pas conforme aux normes. Cela devrait ressembler à ceci :
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
<label>File: </label><input type="file" name="image" />
<input type="submit" />
</form>
Remarque :
Lors du traitement de fichiers et de leur stockage en tant que BLOB, les données doivent être échappées à l'aide de mysql_real_escape_string()
, sinon cela entraînera une erreur de syntaxe.