Utiliser les paramètres liés plusieurs fois
Dans la programmation de bases de données, l'utilisation de paramètres liés est cruciale pour empêcher les attaques par injection SQL. Cependant, les développeurs rencontrent souvent un problème lorsqu'ils tentent d'utiliser le même paramètre plusieurs fois dans une instruction préparée.
Énoncé du problème original
Le message original traite d'un scénario dans lequel un L'utilisateur souhaite implémenter un moteur de recherche qui utilise UNION SELECT pour récupérer des données de différentes tables, chacune avec des critères de recherche différents. La requête contient plusieurs instances d'un paramètre ":term", qui est lié à une instruction préparée.
Solution : variables définies par l'utilisateur
La solution fournie propose une approche alternative pour utiliser plusieurs fois des paramètres liés. En utilisant les variables MySQL définies par l'utilisateur, les développeurs peuvent simplifier leur code et améliorer la lisibilité :
Exemple de code
$sql = "SET @term = :term"; $stmt = $dbh->prepare($sql); $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR); $stmt->execute(); $sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term"; $stmt = $dbh->prepare($sql); $stmt->execute(); $stmt->fetchAll();
Avantages
Inconvénients
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!