Maison > développement back-end > tutoriel php > Pourquoi mon code PHP PDO génère-t-il une erreur « SQLSTATE[HY093] : numéro de paramètre invalide » ?

Pourquoi mon code PHP PDO génère-t-il une erreur « SQLSTATE[HY093] : numéro de paramètre invalide » ?

Linda Hamilton
Libérer: 2024-11-30 06:51:10
original
830 Les gens l'ont consulté

Why Does My PHP PDO Code Throw a

PDOException : "SQLSTATE[HY093] : numéro de paramètre non valide" en PHP

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,
    )
);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal