Maison > développement back-end > tutoriel php > Comment corriger l'erreur « mysqli_stmt::bind_param() attend une référence » ?

Comment corriger l'erreur « mysqli_stmt::bind_param() attend une référence » ?

Barbara Streisand
Libérer: 2024-12-01 17:25:14
original
448 Les gens l'ont consulté

How to Fix the

Résolution de l'erreur "mysqli bind_param() attend une référence"

Lorsque vous rencontrez l'erreur "Paramètre 3 de mysqli_stmt::bind_param() censé être une référence, valeur donnée", cela indique que le tableau $params n'est pas correctement configuré pour la liaison. Pour résoudre ce problème, il est crucial de comprendre les exigences de mysqli_stmt_bind_param().

L'erreur survient car mysqli_stmt_bind_param() s'attend à ce que les paramètres soient transmis par référence. Cependant, le tableau $params contient des copies de valeurs, qui ne sont pas des références. Pour corriger cela, vous devez convertir les valeurs de $params en références en utilisant la méthode suivante :

function refValues($arr) {
    if (strnatcmp(phpversion(), '5.3') >= 0) { // Reference is required for PHP 5.3+
        $refs = array();
        foreach ($arr as $key => $value)
            $refs[$key] = &$arr[$key];
        return $refs;
    }
    return $arr;
}
Copier après la connexion

Une fois que le tableau $params contient des références aux valeurs, vous pouvez lier correctement les paramètres en utilisant ce qui suit code :

AOP :

$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)";
$params = array(1, "2", "3", "4");
$param_type = "isss";
$sql_stmt = mysqli_prepare($mysqli, $query);
call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $param_type), refValues($params)));
mysqli_stmt_execute($sql_stmt);
Copier après la connexion

POO :

$insert_stmt = $mysqli->prepare($query);
array_unshift($params, $param_type);
call_user_func_array(array($insert_stmt, 'bind_param'), refValues($params));
$insert_stmt->execute();
Copier après la connexion

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