Vous J'essaie de stocker une image dans une base de données MySQL en utilisant PHP, mais ça ne fonctionne pas comme prévu. Les données d'image ne sont pas insérées dans la base de données.
Vérifiez le problème d'interpolation variable
Dans votre requête, vous utilisez la fonction file_get_contents() pour récupérer les données de l'image, mais vous ne concaténez pas explicitement son résultat à la chaîne de requête. Par conséquent, la requête contient la chaîne "file_get_contents($tmp_image)" au lieu des données réelles de l'image.
Solution 1 : Concaténation explicite
Pour concaténer l'image données correctement, vous devez sortir de la chaîne et faire les choses explicitement :
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . file_get_contents($tmp_image) . "')";
Gérer la désinfection
Si les données de l'image binaire contiennent des apostrophes ('), cela peut interrompre la requête SQL. Pour éviter cela, vous devez exécuter les données via la fonction mysql_escape_string pour la désinfection :
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id','" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
Envisagez un stockage alternatif
Stockage de données binaires volumineuses (telles que des images) dans Les bases de données MySQL peuvent les rendre volumineuses. Si possible, envisagez d'utiliser un système de stockage de fichiers distinct pour les images.
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!