É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 '\'
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!