Maison >base de données >tutoriel mysql >Comment lier en toute sécurité des valeurs LIKE avec PDO dans les requêtes SQL ?

Comment lier en toute sécurité des valeurs LIKE avec PDO dans les requêtes SQL ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-13 12:50:10202parcourir

How to Safely Bind LIKE Values with PDO in SQL Queries?

Liaison de valeurs LIKE avec PDO

Lorsque vous essayez de lier des valeurs LIKE à l'aide de l'extension PDO, il est important de considérer comment le caractère générique % est géré.

Dans l'exemple fourni :

select wrd from tablename WHERE wrd LIKE '$partial%'

Il existe plusieurs façons d'aborder la liaison :

  • select wrd from tablename WHERE wrd LIKE ':partial%':
    Cela lierait :partial à $partial="somet", et la requête rechercherait mots se terminant par "somet."
  • sélectionnez wrd à partir du nom de la table WHERE wrd LIKE ':partial' :
    Cela lierait :partial à $partial="somet%", incluant le % dans la valeur liée. La requête ne trouvera aucun résultat puisque la chaîne partielle ne se termine pas par %.
  • SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%'):
    Cette option joint la valeur liée avec % à la fin de MySQL, gérant efficacement le caractère générique.

Dans les cas complexes où la chaîne partielle peut contenir des caractères spéciaux (% ou _), un échappement supplémentaire peut être nécessaire :

$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'");
$escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var);
$stmt->bindParam(':term', $escaped);

Cette approche remplace les occurrences de , %, et _ dans la valeur liée par des versions échappées.

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