Exception PDO : numéro de paramètre non valide en PHP
Rencontre de l'erreur "SQLSTATE[HY093] : numéro de paramètre non valide" lors de la tentative d'utilisation de PHP AOP ? La cause sous-jacente peut être liée à l'utilisation des paramètres dans les instructions préparées.
Description du problème :
Dans l'extrait de code fourni :
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
Il y a un marqueur de paramètre ":hash2" manquant dans la clause UPDATE. Cette divergence conduit à l'exception PDO car PDO nécessite des marqueurs de paramètres uniques pour chaque valeur à lier dans l'instruction.
Solution :
Ajustez la requête SQL de l'instruction préparée à ce qui suit :
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
En conséquence, modifiez l'instructionexecute() pour inclure le paramètre ":hash2" marqueur :
$stm->execute( array( ":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash ) );
Contexte :
La méthode prepare() de PDO nécessite des marqueurs de paramètres uniques pour lier les valeurs lors de l'appel d'execute(). L'utilisation de marqueurs de paramètres répétés n'est pas autorisée et l'attribution de plusieurs valeurs au même paramètre n'est pas prise en charge dans les clauses telles que la clause "IN()".
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!