Heim > Datenbank > MySQL-Tutorial > Wie behebe ich einen Fehler beim Übergeben von Array-Parametern mit der LIMIT-Klausel in PDO?

Wie behebe ich einen Fehler beim Übergeben von Array-Parametern mit der LIMIT-Klausel in PDO?

Linda Hamilton
Freigeben: 2024-10-23 19:46:31
Original
708 Leute haben es durchsucht

How to Resolve Error When Passing Array Parameters with LIMIT Clause in PDO?

Übergabe eines Arrays von PDO-Parametern mit der LIMIT-Klausel

Einführung:

Beim Arbeiten mit PDO , kann es schwierig sein, ein Array von Parametern zu übergeben und gleichzeitig die LIMIT-Klausel zu verwenden. Dieser Artikel bietet eine Lösung für dieses Problem.

Problemstellung:

Angesichts der folgenden SQL-Abfrage:

SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%')
LIMIT :limit1, :limit2
Nach dem Login kopieren

Sie möchten dies ausführen Abfrage mit einem Array von Parametern, wie unten gezeigt:

$stmt->execute($array);
Nach dem Login kopieren

Die Verwendung der bindParam()-Methode für die LIMIT-Parameter (:limit1 und :limit2) führt jedoch zu einem Fehler.

Lösung:

Die Lösung besteht darin, die Standard-PDO-Einstellung von PDO::ATTR_EMULATE_PREPARES zu deaktivieren. Diese Einstellung weist PDO im Wesentlichen an, vorbereitete Anweisungen zu emulieren, anstatt sie nativ zu verwenden.

So deaktivieren Sie diese Einstellung:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Nach dem Login kopieren

Sobald diese Einstellung deaktiviert ist, kann die Abfrage mit vorbereitet und ausgeführt werden das Array von Parametern, einschließlich der LIMIT-Werte:

$stmt = $pdo->prepare($sql);
$stmt->execute(array(5)); //works!
Nach dem Login kopieren

Auswirkungen:

Das Deaktivieren von PDO::ATTR_EMULATE_PREPARES kann die Leistung verbessern, da der Aufwand für die Emulation vorbereiteter Elemente entfällt Aussagen. Es ist jedoch zu beachten, dass diese Einstellung aus Leistungsgründen standardmäßig aktiviert ist.

Zusätzliche Ressourcen:

  • [PDO MySQL: PDO verwenden:: ATTR_EMULATE_PREPARES oder nicht?](https://pdosql.org/pdo-mysql-use-pdo-attr-emulate-prepares-or-not/)

Das obige ist der detaillierte Inhalt vonWie behebe ich einen Fehler beim Übergeben von Array-Parametern mit der LIMIT-Klausel in 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