Dans les requêtes SQL pilotées par PDO, il est courant de rencontrer le besoin de lier des valeurs LIKE qui incluent le caractère générique %. La liaison de ces valeurs garantit la prévention des injections SQL. Cependant, la syntaxe pour ce faire peut prêter à confusion.
Considérez la requête :
select wrd from tablename WHERE wrd LIKE '$partial%'
Ici, vous souhaitez liez la variable $partial en utilisant PDO. Le dilemme se pose lorsqu'il s'agit de décider comment lier le caractère %.
Option 1 :
select wrd from tablename WHERE wrd LIKE ':partial%'
Liaison : partielle à $ partial="somet".
Option 2 :
select wrd from tablename WHERE wrd LIKE ':partial'
Lier :partial à $partial="somet%".
Option 3 (Alternative) :
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Effectuez la concaténation de chaînes à l'aide de la fonction MySQL CONCAT.
Si le mot partiel recherché contient un caractère % ou un trait de soulignement, un traitement spécial est requis. La solution consiste à utiliser la clause ESCAPE dans l'instruction PDO :
$stmt = $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escaped = str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var); $stmt->bindParam(':term', $escaped);
Cette technique garantit que les caractères spéciaux sont interprétés correctement dans l'expression LIKE.
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!