Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP PDOException:SQLSTATE[HY093]:Número de parâmetro inválido


Experimentar:
$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)
);

Trecho da documentação (http://php.net/manual/en/pdo. prepare.php ):

Você deve incluir um marcador de parâmetro exclusivo para cada valor que deseja passar para a instrução ao chamar PDOStatement::execute(). Você não pode usar um marcador de parâmetro nomeado com o mesmo nome duas vezes em uma instrução preparada. Você não pode vincular vários valores a um único parâmetro nomeado, por exemplo, na cláusula IN() de uma instrução SQL.