Mysql
 sql >> Base de données >  >> RDS >> Mysql

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

Essayez :

$sql = "INSERT INTO persist (user_id, hash, expire)
        VALUES (:user_id, :hash, :expire)
        ON DUPLICATE KEY UPDATE hash=:hash2";

et

$stm->execute(
    array(":user_id" => $user_id, 
          ":hash" => $hash, 
          ":expire" => $future,
          ":hash2" => $hash)
);

Extrait de la documentation (http://php.net/manual/en/pdo. prepare.php ):

Vous devez inclure un marqueur de paramètre unique pour chaque valeur que vous souhaitez transmettre à l'instruction lorsque vous appelez PDOStatement::execute(). Vous ne pouvez pas utiliser un marqueur de paramètre nommé du même nom deux fois dans une instruction préparée. Vous ne pouvez pas lier plusieurs valeurs à un seul paramètre nommé dans, par exemple, la clause IN() d'une instruction SQL.