Maison > développement back-end > tutoriel php > Pourquoi mon instruction préparée par PDO génère-t-elle une erreur « Numéro de paramètre non valide » ?

Pourquoi mon instruction préparée par PDO génère-t-elle une erreur « Numéro de paramètre non valide » ?

Barbara Streisand
Libérer: 2024-12-15 02:46:16
original
959 Les gens l'ont consulté

Why Does My PDO Prepared Statement Throw an

Exception PDO : numéro de paramètre non valide

Lors de la tentative d'exécution de la fonction add_persist, une erreur "SQLSTATE[HY093] : numéro de paramètre non valide" est rencontré. La fonction insère des données dans la table persistante et met à jour la valeur de hachage si une clé en double est trouvée.

Après examen du code, il devient évident que le problème réside dans l'instruction SQL. L'instruction tente de lier le paramètre :hash deux fois : une fois pour l'opération INSERT et de nouveau pour l'opération ON DUPLICATE KEY UPDATE.

Pour résoudre cette erreur, l'instruction SQL doit être modifiée pour inclure un marqueur de paramètre unique pour chaque valeur étant transmise à l'instruction lors de son exécution. L'instruction modifiée et le code d'exécution sont les suivants :

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
$stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));
Copier après la connexion

Selon la documentation PHP, l'utilisation du même marqueur de paramètre nommé deux fois dans une instruction préparée n'est pas valide. Chaque valeur doit avoir son propre marqueur de paramètre unique pour éviter cette erreur.

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