Implémentation de requêtes LIKE avec PDO
Lors de l'utilisation de l'opérateur LIKE dans le langage de requête structuré (SQL), le signe de pourcentage (%) est utilisé comme caractère générique pour correspondre à zéro ou plusieurs occurrences d'une sous-chaîne. En PHP avec PDO (PHP Data Objects), l'opérateur LIKE peut être utilisé pour effectuer une correspondance de modèle sur une colonne de base de données.
Formulation du problème
Un utilisateur rencontre un problème tout en essayant d'utiliser l'opérateur LIKE dans PDO. Même si nous nous sommes assurés que les valeurs des variables contiennent les termes de recherche souhaités et avons vérifié la fonctionnalité d'autres requêtes PDO, la requête LIKE ne renvoie aucun résultat.
Corriger la syntaxe de la requête
Pour résoudre Pour résoudre le problème, il est important de joindre les valeurs des variables correspondant au caractère générique de pourcentage (%) dans le tableau $params plutôt que de les intégrer dans la chaîne de requête elle-même. Voici la syntaxe correcte :
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?"; $params = array("%$var1%", "%$var2%"); $stmt = $handle->prepare($query); $stmt->execute($params);
Explication
Dans la requête d'origine, les caractères génériques % étaient intégrés dans la chaîne de requête. Cependant, PDO prépare la requête en citant les valeurs, ce qui donne une requête ressemblant à :
SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%'
Cette syntaxe incorrecte empêche les caractères génériques % de fonctionner correctement en tant que caractères génériques, ce qui entraîne qu'aucune correspondance n'est trouvée. En incluant les caractères génériques dans le tableau $params à la place, les signes de pourcentage ne sont pas cités, ce qui leur permet d'effectuer la fonctionnalité de correspondance de caractères génériques prévue.
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!