Lorsque vous rencontrez l'erreur "SQLSTATE[HY093] : numéro de paramètre non valide" lors de l'utilisation du PDO de PHP , cela indique généralement un problème avec la liaison des paramètres dans l'instruction SQL. Dans ce cas précis, le nombre d'espaces réservés nommés dans l'instruction SQL préparée ne correspond pas au nombre de valeurs transmises à la méthode execute().
Le code fourni apparaît inséré dans la table persistante, avec les colonnes uniques user_id, hash et expire, et met à jour la colonne de hachage si une ligne avec l'user_id fourni existe déjà. Cependant, l'instruction SQL contient un marqueur de paramètre nommé en double pour :hash.
Pour résoudre cette erreur, vous pouvez utiliser un paramètre nommé différent pour la clause ON DUPLICATE KEY UPDATE. Voici le code corrigé :
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array( ":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash, ) );
Dans cette version corrigée, le paramètre :hash2 est utilisé pour résoudre le problème de liaison, garantissant que l'instruction SQL contient le nombre correct d'espaces réservés et de valeurs.
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!