Éviter l'erreur "Impossible de transmettre le paramètre par référence" avec bindParam
Lorsque vous travaillez avec PDO, vous pouvez rencontrer l'erreur déroutante "Impossible de transmettre paramètre par référence" lors de l'utilisation de bindParam avec une valeur constante comme PDO::PARAM_NULL.
La raison de cette erreur réside dans la nature de bindParam. Contrairement à bindValue, qui lie une valeur à un paramètre au moment de l'appel, bindParam lie une variable par référence. Cela signifie que bindParam attend une variable qui peut être modifiée lors de l'exécution de la requête. L'utilisation d'une valeur constante comme PDO::PARAM_NULL, qui ne peut pas être modifiée, déclenche l'erreur.
Pour résoudre ce problème, la solution consiste à utiliser bindValue au lieu de bindParam pour les valeurs constantes. bindValue accepte une valeur comme deuxième paramètre et ne nécessite pas de référence.
Voici un exemple utilisant correctement bindValue :
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)'); $stmt->bindValue(':v1', null, PDO::PARAM_INT);
Dans ce cas, bindValue attribue la valeur null au :v1 paramètre avec le type de données PDO::PARAM_INT.
Notez que même si la documentation PHP suggère d'utiliser bindValue(':param', null, PDO::PARAM_NULL), cela peut ne pas fonctionner dans tous les cas. Par conséquent, il est recommandé d'utiliser plutôt PDO::PARAM_INT ou le type de données approprié.
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!