Échapper aux barres obliques inverses dans MySQL : utilisation dans les clauses WHERE et LIKE
Considérez la requête suivante qui recherche un titre contenant une barre oblique inverse :
(SELECT * FROM `titles` WHERE title = 'test\') UNION ALL (SELECT * FROM `titles` WHERE title LIKE 'test\\')
Le résultat montre que la barre oblique inverse n'est pas échappée dans la clause WHERE. Cependant, une barre oblique inverse supplémentaire est requise pour la clause LIKE.
Pourquoi la différence ?
Dans MySQL, les barres obliques inverses () fonctionnent par défaut comme caractères d'échappement dans LIKE. Selon le manuel MySQL pour LIKE :
"Parce que MySQL utilise la syntaxe d'échappement C dans les chaînes... vous devez doubler tout '' que vous utilisez dans les chaînes LIKE. Par exemple, pour rechercher 'n', spécifiez comme 'n'. Pour rechercher '', spécifiez-le comme '\' ; contre."
Echaping des barres obliques inverses
Cependant, MySQL offre la possibilité de modifier le caractère d'échappement à l'aide du mot-clé ESCAPE. Par exemple, la requête suivante utiliserait un caractère barre verticale (|) comme caractère d'échappement :
SELECT * FROM `titles` WHERE title LIKE 'test\' ESCAPE '|'
Avec cette requête, une seule barre oblique inverse est requise dans la clause LIKE, car le caractère barre verticale sera utilisé pour m'échapper.
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!