Maison > base de données > tutoriel mysql > Pourquoi « bindParam » échoue-t-il avec les constantes et comment puis-je utiliser « bindValue » à la place ?

Pourquoi « bindParam » échoue-t-il avec les constantes et comment puis-je utiliser « bindValue » à la place ?

Patricia Arquette
Libérer: 2024-12-05 02:17:08
original
868 Les gens l'ont consulté

Why Does `bindParam` Fail with Constants and How Can I Use `bindValue` Instead?

Résolution de l'erreur « Impossible de transmettre le paramètre 2 par référence » lors de l'utilisation de bindParam avec des constantes

Dans votre extrait de code, vous rencontrez l'erreur « Impossible passer le paramètre 2 par référence" lors de la tentative d'utilisation de bindParam avec une valeur constante (par exemple, PDO::PARAM_NULL). Cette erreur se produit car bindParam nécessite une variable à laquelle se lier, pendant que vous transmettez une valeur constante.

Pour résoudre ce problème, vous devez utiliser bindValue au lieu de bindParam. bindValue lie une valeur directement au paramètre, plutôt qu'à une variable. Voici le code corrigé :

try {
    $dbh = new PDO('mysql:dbname=' . DB . ';host=' . HOST, USER, PASS);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
}
catch(PDOException $e)
{
    ...
}
$stmt = $dbh->prepare('INSERT INTO table(v1, v2, ...) VALUES(:v1, :v2, ...)');
$stmt->bindValue(':v1', null, PDO::PARAM_INT); // Using bindValue with null and explicit type
Copier après la connexion

Remarque : Vous pourriez être tenté d'utiliser bindValue(':param', null, PDO::PARAM_NULL), mais cette approche ne fonctionne pas toujours . Au lieu de cela, il est recommandé d'utiliser le type explicite, tel que PDO::PARAM_INT dans cet exemple.

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