Créer des requêtes SELECT avec des conditions LIKE dynamiques en tant qu'instructions préparées mysqli
Lorsque vous travaillez avec des entrées utilisateur, les instructions préparées fournissent un moyen sécurisé d'exécuter SQL requêtes. Pour gérer un nombre dynamique de conditions LIKE en fonction des entrées de l'utilisateur, une approche personnalisée est nécessaire.
Le problème
Le code donné vise à créer une instruction préparée avec une variable nombre de conditions LIKE. Cependant, il y a une erreur avec les caractères % qui ne sont pas placés autour des paramètres mais autour des espaces réservés.
La solution
Pour corriger le problème, les caractères % doivent être renvoyés à la ligne. les paramètres dans la variable de construction. Voici le code modifié :
foreach ($search_exploded as $search_each) { $x++; if ($x == 1) { $construct .= "name LIKE ?%"; // % now wraps the parameter } else { $construct .= " or name LIKE ?%"; // % now wraps the parameter } }
Cela générera une chaîne de construction qui ressemble à ce qui suit :
name LIKE %?% or name LIKE %?% or ...
Améliorations supplémentaires
Le code fourni Les extraits PHP exploitent MySQLi orienté objet au lieu de la syntaxe procédurale. De plus, la solution garantit que les expressions de clause WHERE et les types de données dynamiques sont pris en compte, éliminant ainsi le besoin d'une instruction préparée si aucune condition n'existe.
Conclusion
En suivant ces étapes , vous pouvez créer efficacement des conditions LIKE dynamiques dans les instructions préparées par MySQLi, améliorant ainsi considérablement vos capacités de gestion des requêtes SQL.
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!