Maison  >  Article  >  développement back-end  >  Comment lier dynamiquement des paramètres avec `bind_param()` lors de la gestion de valeurs vides en PHP ?

Comment lier dynamiquement des paramètres avec `bind_param()` lors de la gestion de valeurs vides en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-30 09:17:02678parcourir

How to Dynamically Bind Parameters with `bind_param()` When Handling Empty Values in PHP?

Liaison de variable dynamique avec bind_param()

Lorsque vous travaillez avec des nombres variables de variables d'entrée pour bind_param(), la gestion des valeurs vides peut être un problème défi. Tenter d'utiliser "..." dans la chaîne d'espace réservé peut ne pas être réalisable en raison de valeurs $_POST vides.

Une solution à ce problème consiste à utiliser call_user_func_array() pour transmettre un nombre variable d'arguments au bind_param. () :

<code class="php">$parameterNames = array('myvar1', 'myvar2', /* ... */);
$parameters = array();
foreach ($parameterNames as $name) {
    if (isset($_POST[$name]) && $_POST[$name] != '') {
        $parameters[$name] = $_POST[$name];
    }
}

if (count($parameters)) {
    $query = 'UPDATE mytable SET ';
    foreach ($parameters as $name => $value) {
        $query .= $name.'=?,';
    }
    $query = substr($query, 0, -1); // Remove trailing comma
    $query .= 'WHERE id = ?';

    $statement = $mysqli->prepare($query);
    $typeString = str_repeat('s', count($parameters));
    $parameters = array_merge(array($typeString), array_values($parameters));
    call_user_func_array(array($statement, 'bind_param'), $parameters);
}</code>

Cette approche vous permet de générer dynamiquement la requête SQL en fonction des valeurs $_POST disponibles, garantissant que seules les valeurs non vides sont incluses dans l'instruction de mise à jour.

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