SQLSTATE[HY093] : Numéro de paramètre invalide avec PDO
Lors de la tentative d'exécution d'une fonction, un message d'erreur indiquant "SQLSTATE[HY093] : Numéro de paramètre invalide" peut apparaître. Ce problème est dû à une mauvaise compréhension du comportement des paramètres nommés avec PDO.
La fonction que vous avez fournie inclut le code suivant :
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
Lors de la définition de paramètres nommés pour une instruction SQL, il est Il est crucial de garantir que chaque marqueur de paramètre unique n’est utilisé qu’une seule fois. Cependant, dans ce cas, ":hash" est utilisé deux fois, ce qui entraîne l'erreur.
Pour résoudre ce problème, vous devez attribuer un marqueur de paramètre unique pour chaque valeur que vous transmettez à l'instruction lors de l'appel de PDOStatement. ::execute():
$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) );
La requête SQL résultante insérera ou mettra à jour avec succès la table « persister » sans rencontrer l'erreur de numéro de paramètre non valide.
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!