Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP PDOException:SQLSTATE[HY093]:Ungültige Parameternummer

Versuchen Sie:

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

und

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

Auszug aus der Dokumentation (http://php.net/manual/en/pdo. vorbereitung.php ):

Sie müssen eine eindeutige Parametermarkierung für jeden Wert einfügen, den Sie an die Anweisung übergeben möchten, wenn Sie PDOStatement::execute() aufrufen. Sie können eine benannte Parametermarke mit demselben Namen nicht zweimal in einer vorbereiteten Anweisung verwenden. Sie können beispielsweise in der IN()-Klausel einer SQL-Anweisung nicht mehrere Werte an einen einzelnen benannten Parameter binden.