Maison > développement back-end > tutoriel php > Pourquoi PDO génère-t-il une erreur « Impossible de transmettre le paramètre par référence » et comment puis-je la corriger à l'aide de bindValue ?

Pourquoi PDO génère-t-il une erreur « Impossible de transmettre le paramètre par référence » et comment puis-je la corriger à l'aide de bindValue ?

DDD
Libérer: 2024-12-23 20:29:11
original
606 Les gens l'ont consulté

Why Does PDO Throw a

É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);
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal