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!