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

PHP PDOException:SQLSTATE[HY093]:Ugyldigt parameternummer

Prøv:

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

og

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

Uddrag fra dokumentationen (http://php.net/manual/en/pdo. prepare.php ):

Du skal inkludere en unik parametermarkør for hver værdi, du ønsker at overføre til sætningen, når du kalder PDOStatement::execute(). Du kan ikke bruge en navngivet parametermarkør af samme navn to gange i en forberedt sætning. Du kan ikke binde flere værdier til en enkelt navngivet parameter i f.eks. IN()-sætningen i en SQL-sætning.



  1. Tidszonekonvertering i SQL-forespørgsel

  2. Sådan downloades Postgres bytea-kolonne som fil

  3. pg perle '0.14.0' på Mountain Lion mislykkes

  4. Hvad er den mest elegante måde at gemme tidsstempel med nanosec i postgresql?