Lorsqu'ils tentent de stocker une image dans MySQL, les utilisateurs peuvent rencontrer un problème où les données d'image ne sont pas stockées comme prévu, même si elles s'affichent correctement lors de l'impression. En effet, la fonction PHP file_get_contents() est traitée comme une chaîne dans la requête SQL et n'est pas exécutée.
Une solution consiste à concaténer le résultat de file_get_contents() avec la chaîne de requête SQL, lui permettant d'être exécuté dans le cadre de la requête. Le code suivant illustre cette approche :
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . file_get_contents($tmp_image) . "')";
Pour éviter les vulnérabilités d'injection SQL, il est essentiel d'échapper aux données binaires contenant des caractères spéciaux avant de les insérer dans le base de données. Ceci peut être réalisé en utilisant la fonction mysql_escape_string(). Le code mis à jour serait :
$sql = "INSERT INTO ImageStore(ImageId,Image) VALUES('$this->image_id', '" . mysql_escape_string(file_get_contents($tmp_image)) . "')";
En tant que bonne pratique, il est recommandé d'éviter de stocker des données binaires volumineuses, telles que des images, directement dans MySQL. bases de données. Pensez plutôt à les stocker dans des fichiers séparés et à référencer leurs chemins dans la base de données. Cette approche améliore les performances et la flexibilité de la base de données.
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!