sql >> Database >  >> RDS >> Mysql

PHP PDOException:SQLSTATE [HY093]:ongeldig parameternummer

Probeer:

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

en

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

Uittreksel uit de documentatie (http://php.net/manual/en/pdo. prepare.php ):

U moet een unieke parametermarkering opnemen voor elke waarde die u aan de instructie wilt doorgeven wanneer u PDOStatement::execute() aanroept. U kunt een benoemde parametermarkering met dezelfde naam niet twee keer gebruiken in een voorbereide instructie. U kunt niet meerdere waarden binden aan een enkele benoemde parameter in bijvoorbeeld de IN()-clausule van een SQL-instructie.



  1. OLE DB-provider 'Microsoft.Jet.OLEDB.4.0' kan niet worden gebruikt voor gedistribueerde zoekopdrachten

  2. Waarom vertraagt ​​de hogere LIMIT-offset van MYSQL de query?

  3. ORA-12557 TNS:protocoladapter niet laadbaar

  4. Zijn er nadelen aan het gebruik van tekst van het gegevenstype voor het opslaan van strings?