Comment télécharger des images en base de données MySQL à l'aide de code PHP
Je suis en train d'enregistrer des images dans ma base de données à partir de formulaires HTML. J'ai écrit le code PHP pour accomplir cette tâche. Le programme n'est pas générer de message d'erreur, mais aussi de ne pas insérer les données d'image dans la base de données MySQL. Veuillez la vérifier.
Ici, je vais partager un extrait de mon code.
/*-------------------
IMAGE QUERY
---------------*/
$file =$_FILES['image']['tmp_name'];
if(!isset($file))
{
echo 'Please select an Image';
}
else
{
$image_check = getimagesize($_FILES['image']['tmp_name']);
if($image_check==false)
{
echo 'Not a Valid Image';
}
else
{
$image = file_get_contents ($_FILES['image']['tmp_name']);
$image_name = $_FILES['image']['name'];
if ($image_query = mysql_query ("insert into product_images values (1,'$image_name',$image )"))
{
echo $current_id;
//echo 'Successfull';
}
else
{
echo mysql_error();
}
}
}
/*-----------------
IMAGE QUERY END
---------------------*/
<form action='insert_product.php' method='POST' enctype='multipart/form-data' ></br>
File : <input type='file' name= 'image' >
</form>
Message D'Erreur
Vous avez une erreur dans votre syntaxe SQL; consultez le manuel
correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser
près de " à la ligne 1
- Vous pouvez stocker dans votre base de données en base64 de l'image, ou son chemin sur le serveur.
- Qu'est-ce que base64?
- Ne pas enregistrer les images en db, sauf si c'est une partie essentielle de votre application.
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, vous devez vérifier si votre image de la colonne est de type BLOB!
Je ne sais rien à propos de votre table SQL, mais si je vais essayer de faire mon propre comme un exemple.
Nous avons obtenu des champs
id
(int),image
(blob) etimage_name
(varchar(64)).De sorte que le code devrait ressembler à ceci (à supposer ID est toujours " 1 " et nous allons utiliser cette mysql_query):
Vous faites du tort à de nombreux égards. Ne pas utiliser les fonctions mysql - ils sont obsolètes! Utilisation AOP ou MySQLi. Vous devez également penser à ranger les emplacements de fichiers sur le disque. L'utilisation de MySQL pour le stockage des images est pensé pour être une Mauvaise Idée™. La manipulation de la table SQL avec des données importantes comme les images peuvent être problématiques.
Également votre formulaire HTML est hors normes. Il devrait ressembler à ceci:
Note:
Lorsque vous traitez avec des fichiers et de les stocker sous forme d'un BLOB, les données doivent être échappés à l'aide
mysql_real_escape_string()
, sinon il en résultera une erreur de syntaxe.BLOB
, les données doit être échappé à l'aide demysql_real_escape_string()
, sinon c' va provoque une erreur de syntaxe. Ce pas juste "pour être sûr", c'est parce qu'il doit en être fait.Juste quelques détails de plus:
`image` blob
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$sql = "INSERT INTO `product_images` (`id`, `image`) VALUES ('1', '{$image}')";
<img src="data:image/png;base64,'.base64_encode($row['image']).'">
C'est le bon code pour le téléchargement et l'affichage de l'image par le biais de bases de données MySQL.