Maison > base de données > tutoriel mysql > Comment insérer correctement des blobs d'images dans MySQL à l'aide de PHP ?

Comment insérer correctement des blobs d'images dans MySQL à l'aide de PHP ?

Mary-Kate Olsen
Libérer: 2024-12-26 15:53:09
original
208 Les gens l'ont consulté

How to Properly Insert Image Blobs into MySQL Using PHP?

Insérer des blobs dans des bases de données MySQL avec PHP

Lorsqu'il faut stocker une image dans une base de données MySQL, on peut rencontrer des difficultés. Voici la structure de la table :

mysql> describe ImageStore;
+---------+----------+------+-----+---------+-------+
| Field   | Type     | Null | Key | Default | Extra |
+---------+----------+------+-----+---------+-------+
| ImageId | int(11)  | NO   | PRI | NULL    |       |
| Image   | longblob | NO   |     | NULL    |       |
+---------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)
Copier après la connexion

La requête suivante tente d'insérer une image, mais ne parvient pas à stocker les données binaires attendues :

$tmp_img = $this->image['tmp_name'];
$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','file_get_contents($tmp_image)')";
mysql_query($sql); 
Copier après la connexion

Le problème réside dans la concaténation de la fonction appelez file_get_contents($tmp_image) à l'intérieur de la chaîne. L'interpolation de variables PHP ne fonctionne que pour les variables, pas pour les appels de fonction. Voici trois solutions :

Solution 1 : Utiliser la concaténation explicite :

$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
Copier après la connexion

Solution 2 : Nettoyer les données binaires pour la requête MySQL :

$sql = "INSERT INTO ImageStore(ImageId,Image)
VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
Copier après la connexion

Remarque : Je préfère ne pas stocker de grandes images dans MySQL bases de données si possible.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal