Maison >développement back-end >tutoriel php >Comment échapper correctement aux caractères génériques MySQL : quand et pourquoi ?

Comment échapper correctement aux caractères génériques MySQL : quand et pourquoi ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-08 05:33:01248parcourir

How to Properly Escape MySQL Wildcards: When and Why?

Échapper aux caractères génériques MySQL : clarifier les idées fausses

MySQL utilise des caractères spécifiques comme caractères génériques pour faciliter la correspondance de modèles dans les requêtes. Cependant, dans certains contextes, il est crucial de comprendre les subtilités de l'échappement de ces caractères génériques pour garantir des instructions SQL précises et cohérentes.

Échapper % et _ pour les littéraux de chaîne

Contraire par rapport à l'hypothèse initiale, il n'est pas nécessaire d'échapper aux caractères génériques MySQL % et _ à l'aide d'addcslashes lors de leur attribution à des littéraux de chaîne normaux. La fonction mysql_real_escape_string est adéquate à cet effet.

La nuance de l'échappement dans les expressions LIKE

Lors de la préparation de chaînes pour les instructions LIKE, une approche plus nuancée est nécessaire. Dans une expression LIKE, % et _ deviennent des caractères spéciaux, ainsi que le caractère d'échappement lui-même. Pour éviter toute mauvaise interprétation, il est essentiel d'effectuer deux niveaux d'échappement :

  1. LIKE Escaping : Ici, MySQL utilise une barre oblique inverse comme caractère d'échappement. Seuls % et _ doivent être échappés conformément à ANSI SQL, et le caractère d'échappement doit également être échappé pour une correspondance LIKE appropriée.
  2. Échappage de chaîne MySQL : Une fois l'échappement LIKE terminé, la chaîne résultante doit subir un échappement de chaîne régulier à l'aide de mysql_real_escape_string.

Résoudre le Incohérences apparentes

La raison pour laquelle l'astérisque ("", '') apparaît sans échappement lorsqu'il est renvoyé de la base de données est que MySQL filtre automatiquement les s. Il s'agit d'une déviation de ANSI SQL, qui stipule que les caractères autres que % et _ ne doivent pas être échappés.

Considérations sur la portabilité pour LIKE Échapper

Pour garantir la portabilité entre les bases de données, il est conseillé de spécifier un caractère d'échappement alternatif à l'aide de la construction LIKE ... ESCAPE ... Cela remplace le comportement par défaut et élimine le recours à l'écart de MySQL par rapport à ANSI. SQL.

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