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

Mary-Kate Olsen
Libérer: 2024-10-26 03:33:02
original
384 Les gens l'ont consulté

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal