Heim > Datenbank > MySQL-Tutorial > Was kann den SQLSTATE[HY000] verursachen: Allgemeiner Fehler: 2031 im PDO?

Was kann den SQLSTATE[HY000] verursachen: Allgemeiner Fehler: 2031 im PDO?

Susan Sarandon
Freigeben: 2024-10-24 17:02:02
Original
761 Leute haben es durchsucht

What Can Cause the SQLSTATE[HY000]: General error: 2031 in PDO?

Fehler: PDO-Fehler: SQLSTATE[HY000]: Allgemeiner Fehler: 2031

Dieser Fehler weist darauf hin, dass ein Problem mit den Parametern von vorliegt eine SQL-Abfrage. In diesem Fall scheint das Problem darin zu liegen, dass die bindValue()-Methode zum manuellen Hinzufügen von LIMIT-Platzhaltern zur Abfrage verwendet wird.

Der folgende Code verursacht den Fehler:

<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>
Nach dem Login kopieren

Der Fehler tritt auf, weil die Abfrage Platzhalter (:page und :entries_per_page) enthält, die mit bindValue() gebunden werden müssen, bevor die Abfrage ausgeführt werden kann. Bevor jedoch bindValue() zum Binden der LIMIT-Platzhalter verwendet wird, wandelt die Engine sie in Zeichenfolgen um. Um dieses Problem zu beheben, können Sie den folgenden Code verwenden:

<code class="php">if ($limit) {
   $query = str_replace(':page', $page - 1, $query);
   $query = str_replace(':entries_per_page', $page * $entries_per_page, $query);
   $sth->execute($criteria);
}</code>
Nach dem Login kopieren

Dieser Code ersetzt die Platzhalter in der Abfrage durch ihre Werte, bevor die Abfrage ausgeführt wird.

Vorsicht vor Duplikaten Parameternamen

Es ist wichtig zu beachten, dass der Fehler 2031 auch durch die Bindung zweier Werte an denselben Parameternamen verursacht werden kann. Zum Beispiel:

<code class="php">$sth->bindValue(':colour', 'blue');
$sth->bindValue(':colour', 'red');</code>
Nach dem Login kopieren

Die zweimalige Verwendung desselben Parameternamens führt zu einem Fehler. Daher ist es wichtig sicherzustellen, dass jeder Parametername eindeutig ist.

Das obige ist der detaillierte Inhalt vonWas kann den SQLSTATE[HY000] verursachen: Allgemeiner Fehler: 2031 im PDO?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage