Maison >développement back-end >tutoriel php >Pourquoi `mysqli_stmt::bind_param()` nécessite-t-il des références et comment puis-je corriger l'erreur « Paramètre attendu comme référence » ?

Pourquoi `mysqli_stmt::bind_param()` nécessite-t-il des références et comment puis-je corriger l'erreur « Paramètre attendu comme référence » ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-06 08:56:11261parcourir

Why Does `mysqli_stmt::bind_param()` Require References, and How Can I Fix the

Dépannage des erreurs "Le paramètre mysqli bind_param() devrait être une référence"

L'erreur "Paramètre 3 de mysqli_stmt::bind_param() censé être une référence, valeur donnée" indique un écart entre le type d'entrée attendu et la valeur fournie dans la méthode mysqli_bind_param().

Dans le code donné, vous utilisez call_user_func_array() pour transmettre un tableau de valeurs à mysqli_stmt_bind_param(). Cependant, mysqli_bind_param() s'attend à ce que les paramètres soient passés par référence, tandis que call_user_func_array() accepte soit des références, soit des valeurs.

Pour remédier à ce problème, vous pouvez utiliser la solution suivante fournie dans la documentation PHP :

$refs = array();
foreach ($params as $key => $value)
    $refs[$key] = &$params[$key];
call_user_func_array(array($statement, 'bind_param'), $refs);

Ce code crée un tableau de références ($refs) aux éléments du tableau $params et transmet les $refs array vers mysqli_stmt_bind_param(), en garantissant que les paramètres sont passés par référence.

Vous pouvez également utiliser l'opérateur spread (disponible dans les versions PHP plus récentes) pour transmettre directement les éléments du tableau $params comme références :

call_user_func_array(array($statement, 'bind_param'), ...$params);

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