Exécution de requêtes MySQL avec des instructions préparées et des caractères génériques
Lors de l'exécution de requêtes SQL à l'aide d'instructions préparées, il est essentiel d'utiliser efficacement les caractères génériques pour améliorer la flexibilité et l'efficacité de vos requêtes. Bien que les instructions préparées offrent des avantages en matière de sécurité en empêchant l'injection SQL, elles peuvent nécessiter certains ajustements lors de l'incorporation de caractères génériques.
Dans votre scénario spécifique, l'exécution de la requête :
SELECT * FROM `gc_users` WHERE `name` LIKE '%anyname%'
avec des instructions préparées a initialement échoué, car le code tentait de lier un paramètre directement à un caractère générique. Cependant, en utilisant bindValue au lieu de bindParam, vous avez réussi à obtenir la fonctionnalité souhaitée, en liant la variable $name entourée d'un caractère générique :
$stmt = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` LIKE :name"); $stmt->bindValue(':name', '%' . $name . '%'); $stmt->execute();
Alternativement, vous pouvez également exploiter bindParam en conjonction avec le préfixe et l'ajout de caractères génériques au Variable $name, comme indiqué ci-dessous :
$name = "%$name%"; $query = $dbh->prepare("SELECT * FROM `gc_users` WHERE `name` like :name"); $query->bindParam(':name', $name); $query->execute();
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!