sql >> Base de Datos >  >> RDS >> Mysql

PHP PDOException:SQLSTATE[HY093]:número de parámetro no válido

Prueba:

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

y

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

Extracto de la documentación (http://php.net/manual/en/pdo. preparar.php ):

Debe incluir un marcador de parámetro único para cada valor que desee pasar a la instrucción cuando llame a PDOStatement::execute(). No puede usar un marcador de parámetro con nombre del mismo nombre dos veces en una declaración preparada. No puede vincular varios valores a un único parámetro con nombre, por ejemplo, en la cláusula IN() de una instrucción SQL.