Maison >développement back-end >tutoriel php >Comment dépanner les téléchargements d'images PHP qui ne parviennent pas à s'insérer dans une base de données MySQL ?

Comment dépanner les téléchargements d'images PHP qui ne parviennent pas à s'insérer dans une base de données MySQL ?

DDD
DDDoriginal
2024-12-07 00:53:15492parcourir

How to Troubleshoot PHP Image Uploads Failing to Insert into a MySQL Database?

Comment télécharger des images dans une base de données MySQL à l'aide du code PHP

Le téléchargement d'images dans une base de données MySQL est une tâche courante lors du développement d'applications Web. Cependant, il est important de vous assurer que votre code PHP est correctement configuré pour gérer efficacement les données d'image.

Description du problème

Un développeur rencontre des problèmes avec son code PHP, ce qui vise à insérer des images dans une base de données MySQL. Le code ne génère aucun message d'erreur mais ne parvient pas à insérer les données d'image dans la base de données. Un extrait du code est fourni ci-dessous :

$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();
}

Solution

Après analyse, les problèmes suivants ont été identifiés dans le code :

  • Configuration de la table SQL : Assurez-vous que la colonne de la table MySQL désignée pour stocker les images est de type BLOB pour prendre en charge les fichiers binaires. data.
  • Utilisation des fonctions MySQL : Le code PHP moderne doit utiliser les fonctions PDO ou MySQLi pour les interactions avec la base de données au lieu des fonctions MySQL obsolètes.
  • Structure du formulaire : Le formulaire HTML fourni dans l'extrait de code est obsolète et doit respecter ce qui suit format :
<form action="insert_product.php" method="POST" enctype="multipart/form-data">
    <label>File: </label><input type="file" name="image" />
    <input type="submit" />
</form>
  • Échappement d'image : Lorsque vous traitez des données d'image sous forme de BLOB, assurez-vous qu'elles sont échappées à l'aide de mysql_real_escape_string() pour éviter les erreurs de syntaxe.

Code révisé

Ce qui suit le code intègre les correctifs nécessaires :

$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$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! :("; 
}

En résolvant ces problèmes, le code PHP pourra télécharger avec succès des images dans la base de données MySQL. Il est également recommandé d'envisager de stocker les fichiers image sur disque plutôt que dans la base de données pour des raisons de performances et d'évolutivité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn