Adaptation de bind_param() pour la liaison dynamique de variables d'entrée
Problème :
Liaison d'un nombre variable de variables d'entrée à l'aide de La méthode bind_param() peut être difficile, surtout lorsque certaines variables peuvent être vides et ne doivent pas être mises à jour dans la base de données.
Réponse :
La fonction call_user_func_array() peut être utilisé pour appeler bind_param() avec un nombre variable d'arguments, fournissant ainsi une solution à ce problème.
Implémentation :
-
Définir les noms des variables d'entrée :
- Créez un tableau des noms de variables d'entrée (par exemple, $paramNames = array('myvar1', 'myvar2', /* ... */)) .
-
Filtrer les variables non vides :
- Parcourez les noms des variables d'entrée et vérifiez si chaque variable est définie et non vide dans le tableau $_POST (par exemple, $params[$name] = $_POST[$name];).
-
Construire la chaîne de requête :
- Construisez la chaîne de requête en ajoutant des variables qui ne sont pas vides à la variable $query (par exemple, foreach ($params as $name => $val) { $query .= $name.'=?,'; }).
-
Ajuster la syntaxe de la requête :
- Supprimez la virgule de fin de $query et ajoutez la partie restante de la requête (par exemple, $query = substr($query, 0, -1); $query .= 'WHERE id = ?';).
-
Préparer l'instruction et les paramètres de liaison :
- Préparez l'instruction à l'aide de la requête $ modifiée et appelez bind_param() avec un tableau contenant le nombre correct de caractères s (par exemple, $params = array_merge(array (str_repeat('s', count($params))), array_values($params))).
-
Appelez bind_param() en utilisant call_user_func_array() :
- Invoquez bind_param() en utilisant call_user_func_array(array(&$stmt, 'bind_param'), $params) pour transmettre un nombre variable d'arguments.
Cette technique permet une liaison dynamique des variables d'entrée, en tenant compte des variables vides et en garantissant que seules les données valides sont mises à jour dans la base de données.
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!