sql >> Databasteknik >  >> RDS >> Mysql

PHP PDOException:SQLSTATE[HY093]:Ogiltigt parameternummer

Försök:

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

och

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

Utdrag ur dokumentationen (http://php.net/manual/en/pdo. prepare.php ):

Du måste inkludera en unik parametermarkör för varje värde du vill skicka in till satsen när du anropar PDOStatement::execute(). Du kan inte använda en namngiven parametermarkör med samma namn två gånger i en förberedd sats. Du kan inte binda flera värden till en enda namngiven parameter i t.ex. IN()-satsen i en SQL-sats.



  1. De 50 bästa MySQL-intervjufrågorna du måste förbereda 2022

  2. Använder dataskyddad med ett anpassat nyckellager från Linux

  3. Köra SQL Server 2014 på en Azure Virtual Machine

  4. SQL-injektion som tar sig runt mysql_real_escape_string()