Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den PHP PDOException-Fehler „Ungültige Parameternummer' in vorbereiteten Anweisungen?
PHP PDOException: Behebung des Fehlers „Ungültige Parameternummer“
Dieser Fehler tritt normalerweise auf, wenn eine Abfrage versucht, eine falsche Anzahl von Parametern zu binden eine von der PDO vorbereitete Erklärung. Im bereitgestellten Code ist der Fehler wahrscheinlich auf die Verwendung benannter Platzhalter in der Abfragezeichenfolge zurückzuführen.
Die ursprüngliche Abfrage:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash";
verwendet denselben benannten Platzhalter „:hash“ für sowohl die Ersteinfügung als auch das Update. PDO erfordert jedoch eindeutige Parametermarkierungen für jeden zu bindenden Wert.
Um dieses Problem zu beheben, benennen Sie den Platzhalter in der Update-Klausel um:
$sql = "INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash2";
Zusätzlich wird ein Array von Parametern an gebunden die Methode „execute()“:
$stm->execute(array(":user_id" => $user_id, ":hash" => $hash, ":expire" => $future, ":hash2" => $hash));
Diese Änderung stellt sicher, dass jeder gebundene Wert eine eindeutige Parametermarkierung hat, wodurch das Problem „Ungültige Parameternummer“ behoben wird. Fehler.
Das obige ist der detaillierte Inhalt vonWie behebe ich den PHP PDOException-Fehler „Ungültige Parameternummer' in vorbereiteten Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!