Maison >développement back-end >tutoriel php >Comment puis-je lier dynamiquement plusieurs paramètres dans les requêtes mysqli ?
Liaison dynamique de plusieurs paramètres dans les requêtes mysqli
Traditionnellement, les développeurs PHP s'appuient sur de longues instructions conditionnelles ou sur une concaténation manuelle pour lier plusieurs paramètres dans requêtes mysqli. Cela peut être fastidieux et sujet aux erreurs.
Liaison de paramètres codés en dur
L'exemple que vous avez fourni illustre l'approche codée en dur, dans laquelle le nombre de points d'interrogation et de types de paramètres est manuellement ajusté en fonction du nombre de valeurs d’entrée. Bien que cela fonctionne, ce n'est pas une solution idéale pour gérer les requêtes dynamiques.
Opérateur de déballage d'arguments
Heureusement, PHP 5.6 a introduit l'opérateur de déballage d'argument (...) qui nous permet de transmettre des tableaux en tant que paramètres à des fonctions qui attendent plusieurs arguments individuels.
Solution utilisant Argument Déballage
Pour lier dynamiquement un nombre arbitraire de paramètres en PHP 5.6 , nous pouvons utiliser l'approche suivante :
1. Créer une chaîne de types : Concaténer le caractère correspondant au type de paramètre (par exemple, s pour chaîne) autant de fois qu'il y a de paramètres.
$types = str_repeat('s', count($array)); // returns sss...
2. Lier les paramètres : Utilisez l'opérateur de décompression d'arguments pour transmettre le tableau de valeurs de paramètres en tant que paramètres individuels avec la chaîne de types :
$stmt->bind_param($types, ...$array);
Exemple :
$array = ['a','b','c']; $sql = "SELECT name FROM table WHERE city IN (?,".str_repeat('?,', count($array) - 2).")"; // returns ?,?,?... $stmt = $mysqli->prepare($sql); $stmt->bind_param('s', ...$array); $stmt->execute();
Cette approche gère avec élégance n'importe quel nombre d'entrées paramètres sans avoir besoin d’instructions conditionnelles ou de concaténation manuelle.
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!