Wenn bei der Verwendung des PDO von PHP der Fehler „SQLSTATE[HY093]: Ungültige Parameternummer“ auftritt , weist dies normalerweise auf ein Problem mit der Parameterbindung in der SQL-Anweisung hin. In diesem speziellen Fall stimmt die Anzahl der benannten Platzhalter in der vorbereiteten SQL-Anweisung nicht mit der Anzahl der an die Methodeexecute() übergebenen Werte überein.
Der bereitgestellte Code wird mit den eindeutigen Spalten in die Persistenztabelle eingefügt Benutzer-ID, Hash und Ablaufdatum und aktualisiert die Hash-Spalte, wenn bereits eine Zeile mit der angegebenen Benutzer-ID vorhanden ist. Die SQL-Anweisung enthält jedoch eine doppelte benannte Parametermarkierung für :hash.
Um diesen Fehler zu beheben, können Sie einen anderen benannten Parameter für die ON DUPLICATE KEY UPDATE-Klausel verwenden. Hier ist der korrigierte Code:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2"; $stm = $db->prepare($sql); $stm->execute( array( ":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash, ) );
In dieser korrigierten Version wird der Parameter :hash2 verwendet, um das Bindungsproblem zu beheben und sicherzustellen, dass die SQL-Anweisung die richtige Anzahl an Platzhaltern und Werten hat.
Das obige ist der detaillierte Inhalt vonWarum löst mein PHP-PDO-Code den Fehler „SQLSTATE[HY093]: Ungültige Parameternummer' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!