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 ?

Comment puis-je insérer en toute sécurité des chaînes avec des guillemets simples dans MySQL à l'aide de PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 15:59:12648parcourir

How Can I Safely Insert Strings with Single Quotes into MySQL Using 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!

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