Mysql
 sql >> Database >  >> RDS >> Mysql

PHP PDOException:SQLSTATE[HY093]:numero di parametro non valido

Prova:

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

e

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

Estratto dalla documentazione (http://php.net/manual/en/pdo. prepare.php ):

È necessario includere un indicatore di parametro univoco per ogni valore che si desidera passare all'istruzione quando si chiama PDOStatement::execute(). Non è possibile utilizzare due volte un indicatore di parametro denominato con lo stesso nome in un'istruzione preparata. Non è possibile associare più valori a un singolo parametro denominato, ad esempio, nella clausola IN() di un'istruzione SQL.