„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So übergeben Sie Array-Parameter und verwenden die LIMIT-Klausel mit PDO

So übergeben Sie Array-Parameter und verwenden die LIMIT-Klausel mit PDO

Veröffentlicht am 08.11.2024
Durchsuche:832

How to Pass Array Parameters and Use LIMIT Clause with PDO

Übergabe von Array-Parametern und Verwendung der LIMIT-Klausel mit PDO

Bei der Arbeit mit Datenbankabfragen kann es von Vorteil sein, ein Array von Parametern an zu übergeben eine PDO-Anweisung unter Verwendung der LIMIT-Klausel. Dies kann jedoch eine Herausforderung darstellen, wenn die bindParam-Methode zum Festlegen einzelner Parameter verwendet wird.

Das Dilemma

Die Herausforderung entsteht, weil die LIMIT-Klausel die Bindung bestimmter numerischer Werte erfordert , während die Ausführungsmethode ein Array benannter Parameter erwartet. Diese Inkompatibilität verhindert, dass beide Ansätze gleichzeitig verwendet werden können.

Überwindung des Problems

Die Lösung liegt in der Deaktivierung der Standardeinstellung von PDO::ATTR_EMULATE_PREPARES. Wenn diese Option aktiviert ist, generiert PDO intern dynamisches SQL und setzt Werte in Anführungszeichen, wodurch im Wesentlichen vorbereitete Anweisungen emuliert werden. Dieses Standardverhalten beeinträchtigt jedoch die Übergabe benannter Parameter.

Deaktivieren emulierter Vorbereitungen

Indem Sie PDO::ATTR_EMULATE_PREPARES mithilfe der setAttribute-Methode auf „false“ setzen, wird das Standardverhalten deaktiviert . Dadurch kann PDO tatsächlich vorbereitete Anweisungen verwenden und so die Bindung benannter Parameter ermöglichen, während weiterhin die LIMIT-Klausel verwendet wird.

Beispielverwendung

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2";
$stmt = $pdo->prepare($sql);
$stmt->execute(array(':id' => $id, ':limit1' => $limit1, ':limit2' => $limit2)); // Works!

Überlegungen zur Leistung

Emulierte Vorbereitungen werden standardmäßig für MySQL verwendet, um die Leistung zu verbessern. Das Deaktivieren emulierter Vorbereitungen kann die Leistung leicht beeinträchtigen, ermöglicht jedoch eine größere Flexibilität bei der Parameterbindung.

Zusätzliche Ressourcen

Weitere Informationen zu diesem Thema finden Sie in den folgenden Ressourcen:

  • [PDO MySQL: PDO::ATTR_EMULATE_PREPARES verwenden oder nicht?](https://stackoverflow.com/questions/3273325/pdo-mysql-use-pdo-attr-emulate-prepares-or -nicht)
Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729678132 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

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