Beim Versuch, die Funktion add_persist auszuführen, stoßen Entwickler möglicherweise auf den Fehler „SQLSTATE[HY093]: Ungültige Parameternummer.“ Dieser Fehler ist auf eine falsche Parameterbindung innerhalb der SQL-Abfrage zurückzuführen.
Im bereitgestellten Code versucht die $sql-Anweisung, eine Zeile in der Persistenztabelle zu aktualisieren, indem sie die Befehle INSERT und ON DUPLICATE KEY UPDATE ausführt. Allerdings gibt es eine Diskrepanz in den Parameterbindungen innerhalb des $stm->execute-Aufrufs. Insbesondere erscheint der :hash-Parameter zweimal, aber laut PDO-Dokumentation darf jede eindeutige Parametermarkierung nur einmal an einen Wert gebunden sein.
Um dieses Problem zu beheben, sollte die $sql-Abfrage so geändert werden, dass sie einen eindeutigen Parameter enthält Parametermarkierung für jeden übergebenen Wert, wie folgt:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
Zusätzlich sollte der $stm->execute-Aufruf Bindungen sowohl für :hash als auch enthalten :hash2-Parameter:
$stm->execute( array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash) );
Durch die Behebung dieses Parameterbindungsproblems führt die Funktion add_persist die SQL-Abfrage korrekt aus, ohne den Fehler „Ungültige Parameternummer“ auszulösen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich den Fehler „SQLSTATE[HY093]: Ungültige Parameternummer' in meinem PHP-PDO-Code?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!