Maison >développement back-end >tutoriel php >Pourquoi mon code PHP génère-t-il une erreur « Impossible de transmettre le paramètre 2 par référence » ?

Pourquoi mon code PHP génère-t-il une erreur « Impossible de transmettre le paramètre 2 par référence » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 16:28:11373parcourir

Why Does My PHP Code Throw a

Comprendre l'erreur "Impossible de transmettre le paramètre 2 par référence" de PHP

En PHP, passer des paramètres par référence permet aux modifications apportées à la variable transmise de être reflété dans la variable d'origine. Cependant, si un paramètre devrait être transmis par référence mais qu'il ne l'est pas, cela peut entraîner l'erreur « Impossible de transmettre le paramètre 2 par référence ».

Scénario d'erreur spécifique : requête de MISE À JOUR avec comparaison de dates

Considérez le code PHP suivant :

$selectedDate = date('d-m-Y', ($createDate));

$sql = "UPDATE Session SET Active = ? WHERE DATE_FORMAT(SessionDate,'%Y-%m-%d' ) <= ?";
$update = $mysqli->prepare($sql);
$update->bind_param("is", 0, $selectedDate);  // Line 13

Dans cet exemple, la ligne 13 tente pour lier deux paramètres à l'instruction préparée :

  • Le premier paramètre est un entier (0) et est passé par valeur.
  • Le deuxième paramètre est une chaîne ($selectedDate) et est également transmis par valeur.

Cependant, le deuxième paramètre devrait être une référence à une variable, indiquée par le « s » dans la chaîne de type « est ». Puisqu'il n'est pas passé par référence, l'erreur "Impossible de transmettre le paramètre 2 par référence" est générée.

Résolution : Passer une référence de variable

Pour résoudre cette erreur, transmettez une référence variable au deuxième paramètre, comme indiqué ci-dessous :

$isActive = 0;
$update->bind_param("is", $isActive, $selectedDate);

En passant $isActive par référence, les modifications qui y sont apportées dans le fichier préparé La déclaration sera reflétée dans la variable d'origine.

Comprendre les références en PHP

Pour plus d'informations sur les références en PHP, vous pouvez vous référer à la documentation suivante : http:/ /php.net/manual/en/langue.references.pass.php.

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