Maison > développement back-end > tutoriel php > Pourquoi mysqli_stmt::bind_param() lance-t-il « Paramètre… censé être une référence, valeur donnée » ?

Pourquoi mysqli_stmt::bind_param() lance-t-il « Paramètre… censé être une référence, valeur donnée » ?

Susan Sarandon
Libérer: 2024-12-05 09:11:15
original
693 Les gens l'ont consulté

Why Does mysqli_stmt::bind_param() Throw

Erreur mysqli bind_param() : transmission de valeurs au lieu de références

L'erreur "Le paramètre 3 de mysqli_stmt::bind_param() devrait être une référence, valeur donnée" se produit lorsque mysqli_stmt::bind_param() reçoit un tableau de valeurs au lieu d'un tableau de références à ces valeurs.

Code PDO

Dans le code PDO fourni :

$params = array(1,"2","3","4");
Copier après la connexion

Le tableau $params contient des valeurs plutôt que des références à celles-ci. valeurs. Pour résoudre ce problème, utilisez & pour créer des références :

$params = array(1,&"2", &"3", &"4");
Copier après la connexion

Code POO

De même, dans le code POO :

array_unshift($params, $param_type);
Copier après la connexion

Cette ligne ajoute la chaîne $param_type au début du tableau $params, mais il ne crée pas de références aux valeurs des paramètres. Pour créer des références, utilisez le caractère & :

array_unshift($params, $param_type);
foreach ($params as $key => $value) {
    $params[$key] =& $value;
}
Copier après la connexion

Solution alternative utilisant l'opérateur Spread (PHP 5.6)

Dans les versions PHP 5.6 et supérieures, vous pouvez utiliser l'opérateur spread (... ) pour transmettre le tableau $params en tant qu'arguments individuels sans avoir à créer manuellement des références :

mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params);

$insert_stmt->bind_param($param_type, ...$params);
Copier après la connexion

En passant des références ou en utilisant l'opérateur spread, vous pouvez vous assurer que mysqli_stmt::bind_param() reçoit un tableau de références aux valeurs des paramètres, résolvant ainsi l'erreur.

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 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