Maison  >  Article  >  développement back-end  >  Comment lier dynamiquement des variables d'entrée en PHP avec bind_param() lorsque certaines variables peuvent être vides ?

Comment lier dynamiquement des variables d'entrée en PHP avec bind_param() lorsque certaines variables peuvent être vides ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 03:33:02306parcourir

How to Dynamically Bind Input Variables in PHP with bind_param() when Some Variables May Be Empty?

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 :

  1. 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', /* ... */)) .
  2. 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];).
  3. 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.'=?,'; }).
  4. 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 = ?';).
  5. 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))).
  6. 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn