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 » ?
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));
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!