Maison >base de données >tutoriel mysql >Comment échapper correctement les caractères spéciaux dans les requêtes MySQL ?

Comment échapper correctement les caractères spéciaux dans les requêtes MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 14:18:10959parcourir

How Do I Properly Escape Special Characters in MySQL Queries?

Échapper aux caractères spéciaux dans les requêtes MySQL

Lors de la création de requêtes MySQL incluant des caractères spéciaux, il est crucial de les échapper pour éviter les erreurs de syntaxe. Cela devient encore plus important lorsqu'il s'agit de saisies utilisateur, car les caractères spéciaux peuvent être exploités à des fins malveillantes.

Considérez l'exemple suivant :

select * from tablename where fields like "%string "hi"  %";

Dans cette requête, les guillemets doubles entourant le La chaîne "hi" est interprétée comme faisant partie de la chaîne elle-même, provoquant une erreur de syntaxe.

Échappement Exigences

La séquence d'échappement spécifique requise dépend du caractère spécial utilisé. MySQL reconnaît les séquences d'échappement suivantes :

  • ' ' - Caractère ASCII NUL (0x00)
  • ''' - Caractère guillemet simple
  • '"' - Guillemet double caractère
  • 'b' - Caractère d'espacement arrière
  • 'n' - Nouvelle ligne (saut de ligne) caractère
  • 'r' - Caractère de retour chariot
  • 't' - Caractère de tabulation
  • 'Z' - ASCII 26 (Contrôle-Z)
  • ' ' - Caractère barre oblique inverse
  • '%' - Caractère de pourcentage
  • '_' - Soulignement caractère

Solution

Pour échapper aux guillemets doubles dans l'exemple de requête, la requête doit être écrite comme suit :

select * from tablename where fields like '%string \"hi\" %';

Alternativement, des guillemets simples peuvent être utilisés comme délimiteurs de chaîne :

select * from tablename where fields like '%string ''hi'' %';

Cette approche simplifie l'échappement en garantissant que les guillemets simples dans la chaîne n'ont pas besoin d'être échappés.

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