PDO-Ausnahme: Ungültige Parameternummer
Beim Versuch, die Funktion add_persist auszuführen, wird ein Fehler „SQLSTATE[HY093]: Ungültige Parameternummer“ angezeigt angetroffen wird. Die Funktion fügt Daten in die Persist-Tabelle ein und aktualisiert den Hash-Wert, wenn ein doppelter Schlüssel gefunden wird.
Bei der Prüfung des Codes wird deutlich, dass das Problem in der SQL-Anweisung liegt. Die Anweisung versucht zweimal, den :hash-Parameter zu binden: einmal für die INSERT-Operation und noch einmal für die ON DUPLICATE KEY UPDATE-Operation.
Um diesen Fehler zu beheben, muss die SQL-Anweisung so geändert werden, dass sie eine eindeutige Parametermarkierung für enthält Jeder Wert wird bei der Ausführung an die Anweisung übergeben. Die geänderte Anweisung und der Ausführungscode lauten wie folgt:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));
Laut der PHP-Dokumentation ist die zweimalige Verwendung derselben benannten Parametermarkierung in einer vorbereiteten Anweisung ungültig. Jeder Wert muss über eine eigene eindeutige Parametermarkierung verfügen, um diesen Fehler zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum löst meine vorbereitete PDO-Anweisung den Fehler „Ungültige Parameternummer' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!