Heim >Datenbank >MySQL-Tutorial >So übergeben Sie Array-Parameter und verwenden die LIMIT-Klausel mit 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 Methode „execute“ 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.
Emulierte Vorbereitungen deaktivieren
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
<code class="php">$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!</code>
Ü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:
Das obige ist der detaillierte Inhalt vonSo übergeben Sie Array-Parameter und verwenden die LIMIT-Klausel mit PDO. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!