PDO-Parameterbindungsfehler: SQLSTATE[HY000]: Allgemeiner Fehler 2031
Bei der Verwendung der PDO-Bibliothek von PHP kann der frustrierende Fehler „ PDO-Fehler: SQLSTATE[HY000]: Allgemeiner Fehler: 2031.“ Dieser Fehler weist auf ein Problem mit der Parameterbindung hin.
Eine mögliche Ursache für diesen Fehler ist die Bindung mehrerer Werte an einen einzelnen Parameternamen. Betrachten Sie das folgende Beispiel:
<code class="php">if ($limit) { $sth->bindValue(':page', $page - 1, PDO::PARAM_INT); $sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT); }</code>
In diesem Code wird die Methode bindValue() verwendet, um zwei Werte manuell an den Parameter „:page“ zu binden. Dies ist notwendig, da die PDO-Engine Platzhalter (:placeholder) in Zeichenfolgen umwandelt, wenn Sie versuchen, sie direkt in der LIMIT-Klausel zu verwenden.
Das Binden mehrerer Werte an denselben Parameternamen ist jedoch falsch und führt zu der Fehler „SQLSTATE[HY000]: Allgemeiner Fehler: 2031“.
Lösung:
Um diesen Fehler zu beheben, stellen Sie sicher, dass jeder Parametername nur einmal für die Bindung verwendet wird . In Ihrem Beispiel sollten Sie separate Parameter für die Werte „:page“ und „:entries_per_page“ deklarieren. Zum Beispiel:
<code class="php">if ($limit) { $sth->bindValue(':page', $page - 1, PDO::PARAM_INT); $sth->bindValue(':limit', $page * $entries_per_page, PDO::PARAM_INT); }</code>
Achtung:
Es ist wichtig zu beachten, dass beim Binden auch der Fehler „SQLSTATE[HY000]: Allgemeiner Fehler: 2031“ auftreten kann Mehrere Werte für denselben Parameternamen an anderer Stelle in Ihrem Code, auch ohne Bezug zu LIMIT-Klauseln. Überprüfen Sie daher immer Ihre Parameterbindung, um sicherzustellen, dass jeder Name nur einmal verwendet wird.
Das obige ist der detaillierte Inhalt vonWie behebt man den PDO-Parameterbindungsfehler: \'SQLSTATE[HY000]: Allgemeiner Fehler: 2031\'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!