Maison >développement back-end >tutoriel php >Comment résoudre l'exception PDO : \'SQLSTATE[HY093] : numéro de paramètre invalide\' ?

Comment résoudre l'exception PDO : \'SQLSTATE[HY093] : numéro de paramètre invalide\' ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 03:43:171030parcourir

How to Solve the PDO Exception:

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!

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