Maison  >  Article  >  développement back-end  >  Comment obtenir une liaison d'entrée variable dans MySQLi avec des paramètres POST vides ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 14:52:30206parcourir

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>

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!

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