Comment obtenir une liaison d'entrée variable dans MySQLi avec des paramètres POST vides ?

Linda Hamilton
Libérer: 2024-10-26 14:52:30
original
205 Les gens l'ont consulté

How to Achieve Variable Input Binding in MySQLi with Empty POST Parameters?

Liaison d'entrée variable dans MySQLi

Dans MySQLi, il est souhaitable de lier des paramètres pour empêcher l'injection SQL et optimiser les performances. Cependant, si certains paramètres POST sont vides, il devient nécessaire de les gérer séparément.

Une approche possible consiste à utiliser la fonction call_user_func_array pour appeler la méthode bind_param avec un nombre variable d'arguments. Cela nous permet de construire dynamiquement la chaîne de requête et de lier les paramètres uniquement pour les valeurs non vides.

Voici un exemple :

<code class="php">$paramNames = array('myvar1', 'myvar2', /* ... */);
$params = array();
foreach ($paramNames as $name) {
    if (isset($_POST[$name]) && $_POST[$name] != '') {
        $params[$name] = $_POST[$name];
    }
}
if (count($params)) {
    $query = 'UPDATE mytable SET ';
    foreach ($params as $name => $val) {
        $query .= $name.'=?,';
    }
    $query = substr($query, 0, -1);
    $query .= 'WHERE id = ?';
    $stmt = $mysqli->prepare($query);
    $params = array_merge(array(str_repeat('s', count($params))), array_values($params));
    call_user_func_array(array(&$stmt, 'bind_param'), $params);
}</code>
Copier après la connexion

Ce code parcourt les paramètres POST, vérifie s'ils sont défini et non vide, et les ajoute à un tableau. Il construit ensuite dynamiquement la chaîne de requête avec des paramètres non vides et lie les valeurs à l'aide de call_user_func_array.

En gérant séparément les paramètres POST vides, nous pouvons réaliser une liaison d'entrée variable dans MySQLi, garantissant que seules les données valides sont mises à jour dans le base de données et en évitant les mises à jour inutiles. Il s'agit d'une solution polyvalente et flexible qui peut s'adapter à une variété de combinaisons d'entré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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!