Maison >base de données >tutoriel mysql >Pourquoi « bindParam » échoue-t-il lors de l'utilisation de « LIKE » dans les requêtes MySQL PDO ?

Pourquoi « bindParam » échoue-t-il lors de l'utilisation de « LIKE » dans les requêtes MySQL PDO ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-13 10:36:02269parcourir

Why Does `bindParam` Fail When Using `LIKE` in MySQL PDO Queries?

Correction de la syntaxe LIKE lors de l'utilisation de bindParam pour les requêtes MySQL PDO

Dans les requêtes MySQL PDO, l'utilisation de LIKE avec bindParam peut être délicate. Cette question illustre un problème courant rencontré lors de la tentative de recherche de noms d'utilisateur commençant par une chaîne spécifique.

La syntaxe incorrecte fournie dans la question utilise des guillemets simples internes autour de la variable $term :

$term = "'$term%'";

Pour résoudre ce problème, supprimez simplement les guillemets simples internes :

$term = "$term%";

Lors de l'utilisation de bindParam, PDO gère automatiquement les guillemets de chaîne. L'ajout de guillemets inutiles dans la variable $term peut entraîner une correspondance LIKE incorrecte.

L'instruction corrigée devrait ressembler à ceci :

$sql = "SELECT username 
        FROM `user` 
        WHERE username LIKE :term 
        LIMIT 10";      

$core = Connect::getInstance();

$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':term', $term, PDO::PARAM_STR);
$stmt->execute();
$data = $stmt->fetchAll();

Cela correspondra correctement aux noms d'utilisateur commençant par la variable $term , par exemple "a".

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