Ü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:
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!