Maison >développement back-end >tutoriel php >Comment puis-je insérer avec succès des BLOB (images) dans MySQL à l'aide de PHP ?

Comment puis-je insérer avec succès des BLOB (images) dans MySQL à l'aide de PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-27 22:56:11341parcourir

How Can I Successfully Insert BLOBs (Images) into MySQL Using PHP?

Insérer des BLOB dans des bases de données MySQL avec PHP : un problème et des solutions

Lorsqu'ils tentent de stocker des images dans une base de données MySQL, certains utilisateurs peuvent rencontrer un problème où l'image est pas correctement inséré. Cette divergence peut survenir en raison d'un malentendu sur la façon dont PHP gère les appels de fonction dans les chaînes interpolées.

Problème

Dans le code suivant, l'intention est de stocker les données d'image binaire dans la base de données :

$sql = "INSERT INTO ImageStore(ImageId,Image)               
        VALUES('$this->image_id','file_get_contents($tmp_image)')";

Cependant, cette approche crée une chaîne contenant "file_get_contents($tmp_image)" plutôt que l'image réelle data.

Solution 1 : Concaténation explicite

Pour résoudre ce problème, l'appel de fonction doit être explicitement concaténé dans la chaîne :

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";

Maintenant, les données de l'image sont correctement interpolé dans la chaîne avant d'exécuter la requête.

Solution 2 : Escaping Special Caractères

Les données de l'image binaire peuvent contenir des caractères spéciaux, tels que des guillemets simples, qui peuvent invalider la requête SQL. Pour atténuer cela, les données doivent être échappées avant l'interpolation :

$sql = "INSERT INTO ImageStore(ImageId,Image)
        VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";

Solution 3 : Considérations sur le stockage alternatif

Il est important de noter que le stockage de grandes quantités de données d'image dans une base de données peut s'avérer inefficace. . Envisagez des options de stockage alternatives, telles que le stockage des chemins d'accès aux images dans la base de données et des images réelles dans un système de fichiers dédié ou un réseau de diffusion de contenu (CDN).

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