Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment télécharger des images dans la base de données MySQL en utilisant le code PHP

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.