PDO fournit un moyen sécurisé d'exécuter des requêtes SQL avec des paramètres liés, empêchant ainsi les vulnérabilités d'injection SQL. Lors de la liaison de paramètres LIKE qui incluent des caractères génériques tels que %, vous pourriez rencontrer des confusions.
Dans la requête ci-dessous, nous essayons de lier la variable $partial% à l'aide de PDO :
select wrd from tablename WHERE wrd LIKE '$partial%'
Il est essentiel de comprendre comment PDO gère ces liaisons. L'approche correcte dépend de vos besoins spécifiques.
Oui, c'est une option valide :
select wrd from tablename WHERE wrd LIKE ':partial%'
où :partial est lié à $partial="somet".
Vous pouvez également utiliser cette approche :
select wrd from tablename WHERE wrd LIKE ':partial'
où :partial est lié à $partial="somet%".
Si vous préférez, vous pouvez effectuer la concaténation de chaînes au sein de la requête MySQL elle-même :
SELECT wrd FROM tablename WHERE wrd LIKE CONCAT(:partial, '%')
Si votre mot partiel contient des caractères spéciaux tels que %, _ ou , vous devez les échapper manuellement avant de lier le paramètre. Le code suivant le démontre :
$stmt= $db->prepare("SELECT wrd FROM tablename WHERE wrd LIKE :term ESCAPE '+'"); $escaped= str_replace(array('+', '%', '_'), array('++', '+%', '+_'), $var); $stmt->bindParam(':term', $escaped);
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!