Exception PDO : "SQLSTATE[HY093] : numéro de paramètre invalide" résolu
En essayant d'exécuter une instruction préparée par PDO, vous avez été confronté au erreur "SQLSTATE[HY093] : numéro de paramètre non valide". En inspectant le code fourni, il devient évident que vous avez plusieurs paramètres nommés portant le même nom.
Le problème réside dans votre utilisation des paramètres nommés dans l'instruction SQL et l'appel d'exécution correspondant. Plus précisément, vous avez utilisé le paramètre ":hash" deux fois, ce qui n'est pas autorisé dans les instructions préparées par PDO.
Pour résoudre cette erreur, modifiez votre code comme suit :
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
Dans cette instruction mise à jour, un paramètre nommé supplémentaire ":hash2" est introduit pour remplacer la deuxième occurrence de ":hash".
De plus, l'appelexecute() doit être modifié en conséquence :
$stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
En fournissant des paramètres nommés distincts, vous évitez l'erreur "SQLSTATE[HY093]" provoquée par la redondance des paramètres. Cette approche garantit une liaison appropriée des paramètres et une exécution réussie de l'instruction préparée.
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!