Maison >développement back-end >tutoriel php >Comment télécharger correctement des images sur une base de données MySQL à l'aide de PHP ?

Comment télécharger correctement des images sur une base de données MySQL à l'aide de PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 16:49:14700parcourir

How to Properly Upload Images to a MySQL Database Using PHP?

Télécharger des images vers une base de données MySQL à l'aide de PHP

L'insertion d'images dans une base de données MySQL à l'aide de PHP nécessite plusieurs étapes. Résolvons les problèmes dans le code que vous avez fourni :

1. Structure de la table de base de données :

Assurez-vous que votre table de base de données comporte une colonne définie comme type BLOB ou MEDIUMBLOB pour stocker les données d'image.

2. Déclarations préparées :

Au lieu d'utiliser la fonction obsolète mysql_query(), passez aux instructions préparées en utilisant PDO ou MySQLi. Les instructions préparées empêchent les vulnérabilités d'injection SQL.

3. Gestion appropriée des images :

Le code actuel récupère les données de l'image directement à partir du fichier temporaire. Il s’agit d’un risque pour la sécurité. Utilisez plutôt file_get_contents() avec l'option FILE_BINARY pour vous assurer que le contenu binaire est correctement géré.

4. Désinfection :

Désinfectez les données de l'image à l'aide de addlashes() ou mysqli_real_escape_string() pour empêcher l'injection SQL.

5. Requête d'insertion correcte :

La requête d'insertion doit correspondre à la structure de la table et nettoyer les données en conséquence. Voici une version corrigée :

$stmt = $mysqli->prepare("INSERT INTO product_images (id, image, image_name) VALUES (?, ?, ?)");
$stmt->bind_param("sis", 1, $image, $image_name);
$image = file_get_contents($_FILES['image']['tmp_name'], FILE_BINARY);
$image_name = addslashes($_FILES['image']['name']);
if ($stmt->execute()) {
    echo "Image uploaded successfully";
} else {
    echo "Error: " . $mysqli->error;
}

6. Formulaire HTML :

Le formulaire HTML doit utiliser l'attribut enctype="multipart/form-data", qui permet de transmettre des données binaires dans la requête. De plus, utilisez une balise de fermeture appropriée pour le formulaire

élément.

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

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