Heim >Datenbank >MySQL-Tutorial >Wie behebe ich den PHP PDOException-Fehler „Ungültige Parameternummer' in vorbereiteten Anweisungen?

Wie behebe ich den PHP PDOException-Fehler „Ungültige Parameternummer' in vorbereiteten Anweisungen?

Susan Sarandon
Susan SarandonOriginal
2024-12-11 07:42:14882Durchsuche

How to Resolve the PHP PDOException

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn