Maison > base de données > tutoriel mysql > Comment échapper correctement les caractères génériques MySQL dans les requêtes et les instructions LIKE ?

Comment échapper correctement les caractères génériques MySQL dans les requêtes et les instructions LIKE ?

DDD
Libérer: 2024-12-05 04:45:11
original
470 Les gens l'ont consulté

How to Properly Escape MySQL Wildcard Characters in Queries and LIKE Statements?

Échapper aux caractères échappables MySQL

MySQL contient un ensemble de caractères qui sont considérés comme des caractères génériques, capables de faire correspondre plusieurs entrées. Ces caractères incluent % (pourcentage) et _ (trait de soulignement). Bien que mysql_real_escape_string() soit conçu pour gérer l'échappement de la plupart des caractères à inclure dans les requêtes SQL, il ne traite pas ces caractères génériques.

Pour échapper complètement aux entrées de l'utilisateur et empêcher que ces caractères ne soient interprétés comme des métacaractères, il est recommandé pour utiliser la fonction mysql_real_escape_string() en conjonction avec la fonction addcslashes().

Cependant, lors de l'échappement de caractères pour être inclus dans une instruction LIKE, une approche différente doit être adoptée. Dans les instructions LIKE, _ et % ne sont pas considérés comme des caractères génériques mais comme des caractères littéraux. Pour faire correspondre ces caractères littéralement, ils doivent être échappés à l'aide de la clause ESCAPE.

Par exemple, pour faire correspondre un signe de pourcentage littéral, l'instruction LIKE doit utiliser la syntaxe suivante :

LIKE 'something\%' ESCAPE '\'
Copier après la connexion

Remarque l'utilisation de la barre oblique inverse () comme caractère d'échappement LIKE et comme caractère d'échappement pour le littéral de chaîne SQL. Cela permet au signe de pourcentage (%) d'être interprété littéralement dans l'instruction LIKE.

Lors de l'utilisation des instructions préparées par PHP, l'échappement est géré automatiquement, éliminant ainsi le besoin d'un échappement manuel. Cependant, si les instructions préparées ne sont pas disponibles, la combinaison de mysql_real_escape_string() et addcslashes() peut protéger efficacement les entrées de l'utilisateur contre d'éventuelles attaques par injection 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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal