Gestion de l'erreur « Devrait être une référence » dans mysqli bind_param()
Le message d'erreur « Paramètre 3 de mysqli_stmt::bind_param( ) censé être une référence, valeur donnée" se produit lors de la liaison d'une valeur à une instruction préparée. Pour résoudre ce problème, la valeur fournie doit être une référence à une variable réelle plutôt que la valeur elle-même.
Dans l'extrait de code fourni, le tableau $params contient des valeurs qui ne sont pas des références. Pour lier correctement les valeurs, vous pouvez utiliser l'approche suivante :
$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)"; $param_type = "isss"; // PHP 7+ $sql_stmt = mysqli_prepare($mysqli, $query); mysqli_stmt_bind_param($sql_stmt, $param_type, ...$params); // PHP 5.6 - 7.0 $sql_stmt = mysqli_prepare($mysqli, $query); $arr = array($sql_stmt, $param_type); foreach ($params as $param) { $arr[] = &$param; } call_user_func_array('mysqli_stmt_bind_param', $arr); mysqli_stmt_execute($sql_stmt);
Utilisation des références
Dans PHP 5.3 et versions antérieures, les références ne sont pas requises pour lier les valeurs à une déclaration préparée. Cependant, à partir de PHP 5.4, les références sont obligatoires. La raison de ce changement est d'éviter la copie indésirable de variables et les fuites de mémoire potentielles.
En utilisant des références, le processus de liaison devient plus efficace car les valeurs liées sont directement modifiées, éliminant ainsi le besoin d'affectations de variables supplémentaires.
Conclusion
N'oubliez pas que lorsque vous utilisez mysqli bind_param() avec des valeurs qui ne sont pas des références, vous devez transmettez-les comme références ou utilisez des approches alternatives pour lier correctement les valeurs. Cela garantit une exécution efficace et sans erreur de vos requêtes SQL.
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!