Maison >base de données >tutoriel mysql >Comment puis-je insérer en toute sécurité des chaînes avec des guillemets simples dans MySQL à l'aide de PHP ?
Échapper aux guillemets simples en PHP pour les insertions MySQL
L'insertion de données dans une base de données MySQL implique souvent la gestion de chaînes contenant des caractères spéciaux. Traiter les guillemets simples peut être particulièrement délicat.
Le problème
Un scénario a été décrit dans lequel deux instructions SQL étaient utilisées pour insérer et traiter les données d'un formulaire. La première instruction, utilisée pour insérer des données dans la base de données, a fonctionné sans problème. Cependant, la deuxième instruction, qui récupérait les données et déclenchait l'envoi d'un e-mail, échouait avec une erreur MySQL lorsque le nom contenait un guillemet simple (par exemple, "O'Brien").
La solution
La solution réside dans l'échappement des chaînes insérées dans la base de données. PHP fournit la fonction mysql_real_escape_string() à cet effet. Il remplace les caractères comme les guillemets simples par leurs équivalents échappés, évitant ainsi les erreurs et la corruption des données.
Pourquoi ce comportement différent ?
La raison du comportement différent entre les deux instructions est probablement dû à l'utilisation de magic_quotes_gpc. Cette configuration PHP échappe automatiquement aux chaînes collectées à partir de $_GET, $_POST et $_COOKIES. Dans la première instruction, les données ont été capturées directement à partir du formulaire et cet échappement automatique a été appliqué.
Cependant, lorsque les données ont été récupérées et insérées dans la deuxième instruction, elles n'ont plus été échappées. En conséquence, le guillemet simple dans le nom a provoqué l'erreur MySQL. En utilisant mysql_real_escape_string(), les deux chaînes peuvent être correctement échappées, garantissant ainsi que les caractères spéciaux sont traités correctement et que l'intégrité des données est maintenue.
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!