Maison >base de données >tutoriel mysql >Comment résoudre l'erreur PHP PDOException « Numéro de paramètre invalide » dans les instructions préparées ?

Comment résoudre l'erreur PHP PDOException « Numéro de paramètre invalide » dans les instructions préparées ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-11 07:42:14934parcourir

How to Resolve the PHP PDOException

PHP PDOException : Correction de l'erreur « Numéro de paramètre non valide »

Cette erreur se produit généralement lorsqu'une requête tente de lier un nombre incorrect de paramètres à une déclaration préparée par le PDO. Dans le code fourni, l'erreur est probablement due à l'utilisation d'espaces réservés nommés dans la chaîne de requête.

La requête d'origine :

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";

utilise le même espace réservé nommé ":hash" pour à la fois l'insertion initiale et la mise à jour. Cependant, PDO nécessite des marqueurs de paramètre uniques pour chaque valeur liée.

Pour résoudre ce problème, renommez l'espace réservé dans la clause de mise à jour :

$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";

De plus, liez un tableau de paramètres à la méthodeexecute() :

$stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));

Cette modification garantit que chaque valeur liée a un marqueur de paramètre unique, résolvant le "Numéro de paramètre invalide" 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!

Déclaration:
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