Heim  >  Artikel  >  Datenbank  >  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
Linda HamiltonOriginal
2024-10-23 19:46:31625Durchsuche

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

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

$stmt->execute($array);

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);

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!

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!

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