Übergabe von Array-Parametern mit der LIMIT-Klausel in PDO
In PHP bietet die PDOStatement-Klasse eine Möglichkeit, SQL-Abfragen mit parametrisierten Werten auszuführen. Bei Verwendung der LIMIT-Klausel funktioniert das Binden von Parametern mithilfe der bindParam()-Methode jedoch nicht.
Um dieses Problem zu beheben, ziehen Sie die folgende Lösung in Betracht:
<code class="php">$sql = "SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :offset, :limit"; $stmt = $pdo->prepare($sql); // Turn off PDO emulation of prepared statements for MySQL $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $array = [':id' => 5]; // Bind the LIMIT parameters $stmt->bindParam(':offset', $limit1, PDO::PARAM_INT); $stmt->bindParam(':limit', $limit2, PDO::PARAM_INT); // Execute the query $stmt->execute($array); $results = $stmt->fetchAll();</code>
Durch Deaktivieren der PDO-Emulation von Mit vorbereiteten Anweisungen (Standard für MySQL) können Sie parametrisierte Werte innerhalb der LIMIT-Klausel verwenden. Diese Methode stellt sicher, dass Ihre Abfragen korrekt mit den angegebenen Parametern ausgeführt werden.
Beachten Sie, dass das Deaktivieren der Emulation die Leistung beeinträchtigen kann. Weitere Einzelheiten finden Sie in der Dokumentation zu PDO MySQL: PDO::ATTR_EMULATE_PREPARES verwenden oder nicht?.
Das obige ist der detaillierte Inhalt vonKönnen Sie Array-Parameter mit der LIMIT-Klausel in PDO binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!