Utiliser correctement LIKE avec BindParam dans une requête MySQL PDO
Lorsque vous essayez d'effectuer des recherches LIKE avec bindParam dans les requêtes MySQL PDO, il est essentiel d'utiliser la syntaxe correcte pour garantir des résultats précis.
Syntaxe optimisée
Pour faire correspondre les noms d'utilisateur commençant par « a » à l'aide de bindParam, la syntaxe correcte est :
$term = "a%";
En revanche, la syntaxe fournie dans la question d'origine, "$term = "'$term%'", est incorrecte car elle place des guillemets simples internes inutiles autour du $term valeur, ce qui entraînerait la recherche de 'a%' au lieu de a%.
Le rôle de bindParam
bindParam est chargé de citer automatiquement les données de chaîne lorsqu'elles sont insérées dans SQL Par conséquent, l'ajout manuel de guillemets simples n'est pas nécessaire et peut conduire à des résultats incorrects.
Code révisé
En utilisant la syntaxe optimisée, le code révisé serait :
$term = "a%"; $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();
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3