Ungültiger Parameternummernfehler in PHP PDO
Beim Versuch, eine vorbereitete Anweisung mit PDO auszuführen, kann der Fehler „SQLSTATE[HY093 ]: Ungültige Parameternummer.“ Dieses Problem entsteht durch die falsche Verwendung von Parametermarkierungen.
Die bereitgestellte Funktion add_persist verwendet die folgende vorbereitete Anweisung:
INSERT INTO persist (user_id, hash, expire) VALUES (:user_id, :hash, :expire) ON DUPLICATE KEY UPDATE hash=:hash
Beim Binden der Parameterwerte mit der Methodeexecute() wird die Funktion verwendet die folgenden Werte:
["user_id" => $user_id, "hash" => $hash, "expire" => $future]
Die vorbereitete Anweisung enthält jedoch einen doppelten Parametermarker für Hash, der von PDO nicht zugelassen wird. Um dieses Problem zu beheben, müssen wir jedem übergebenen Wert eine eindeutige Parametermarkierung zuweisen.
Der korrigierte Code wäre:
$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) );
Der zusätzliche Parameter :hash2 stellt sicher, dass in der vorbereiteten Anweisung keine doppelten Parametermarkierungen vorhanden sind, wodurch der Fehler behoben wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3