Maison > développement back-end > tutoriel php > Pourquoi est-ce que j'obtiens une erreur « SQLSTATE[HY093] : numéro de paramètre invalide » dans mon code PHP PDO ?

Pourquoi est-ce que j'obtiens une erreur « SQLSTATE[HY093] : numéro de paramètre invalide » dans mon code PHP PDO ?

Barbara Streisand
Libérer: 2024-11-24 15:50:17
original
1006 Les gens l'ont consulté

Why Am I Getting a

Erreur : numéro de paramètre non valide dans PHP PDOException

Lors de la tentative d'exécution de la fonction add_persist, les développeurs peuvent rencontrer l'erreur "SQLSTATE[HY093] : numéro de paramètre non valide." Cette erreur provient d'une liaison de paramètre incorrecte dans la requête SQL.

Dans le code fourni, l'instruction $sql tente de mettre à jour une ligne de la table persistante en exécutant les commandes INSERT et ON DUPLICATE KEY UPDATE. Cependant, il existe une différence dans les liaisons de paramètres dans l'appel $stm->execute. Plus précisément, le paramètre :hash apparaît deux fois, mais selon la documentation PDO, chaque marqueur de paramètre unique ne doit être lié qu'une seule fois à une valeur.

Pour résoudre ce problème, la requête $sql doit être modifiée pour inclure un marqueur de paramètre pour chaque valeur transmise, comme suit :

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";
Copier après la connexion

De plus, l'appel $stm->execute doit inclure des liaisons pour :hash et :hash2 paramètres :

$stm->execute(
    array(":user_id" => $user_id, 
          ":hash" => $hash, 
          ":expire" => $future,
          ":hash2" => $hash)
);
Copier après la connexion

En résolvant ce problème de liaison de paramètre, la fonction add_persist exécutera correctement la requête SQL sans déclencher l'erreur « Numéro de paramètre invalide ».

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 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