Bei Datenbankoperationen ist es oft notwendig, bedingte Auswahlen basierend auf aus anderen Tabellen abgerufenen Daten durchzuführen. Die NOT IN-Unterabfrage von MySQL bietet eine Möglichkeit, Zeilen aufgrund ihrer Abwesenheit in einer Unterabfrage aus einer primären Abfrage auszuschließen.
CodeIgniter-Implementierung
Um die in der erwähnte MySQL-Abfrage zu replizieren Frage:
SELECT *<br>FROM certs<br>WHERE id NOT IN (SELECT id_cer FROM revokace);<br>
Mit den Abfrage-Builder-Methoden von CodeIgniter können Sie den folgenden Ansatz anwenden:
$this->db->select('*') ->from('certs') ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
Die Methode where() ermöglicht die direkte Übergabe einer beliebigen Zeichenfolge, die in die Abfrage integriert werden soll, und vermeidet so potenzielle Konflikte mit Die Escape-Mechanismen von CodeIgniter. Es wird jedoch empfohlen, bei der Verwendung dieses Ansatzes mit vom Benutzer bereitgestellten Eingaben Vorsicht walten zu lassen, um SQL-Injection-Angriffe zu verhindern.
Optimierte Unterabfragebibliothek
Alternativ sollten Sie die Verwendung einer speziellen Unterabfrage in Betracht ziehen Bibliothek, die die Lesbarkeit des Codes verbessern und komplexe Abfragen vereinfachen kann. Das angegebene Beispiel würde wie folgt übersetzt:
$this->db->select('*') ->from('certs') ->where('id', $this->subquery->subquery('where_in', function ($subq) { $subq->select('id_cer') ->from('revokace'); }, 'id', FALSE));
Diese Bibliothek vereinfacht die Erstellung von Unterabfragen und ermöglicht flexiblere und ausdrucksstärkere SQL-Anweisungen. Unabhängig davon, ob Sie sich für den direkten String-Ansatz entscheiden oder eine Bibliothek verwenden, können Sie mit diesen Methoden NOT IN-Unterabfragen in CodeIgniter effektiv implementieren.
Das obige ist der detaillierte Inhalt vonWie verwende ich NOT IN-Unterabfragen mit dem Query Builder von CodeIgniter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!