Dalam operasi pangkalan data, selalunya perlu melakukan pemilihan bersyarat berdasarkan data yang diambil daripada jadual lain. Subkueri NOT IN MySQL menawarkan cara untuk mengecualikan baris daripada pertanyaan utama berdasarkan ketiadaannya dalam subkueri.
Pelaksanaan CodeIgniter
Untuk mereplikasi pertanyaan MySQL yang disebut dalam soalan:
DARI sijil
WHERE id NOT IN (SELECT id_cer FROM revokace);
menggunakan kaedah pembina pertanyaan CodeIgniter, anda boleh menggunakan pendekatan berikut:
$this->db->select('*') ->from('certs') ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
Kaedah where() membenarkan untuk menghantar terus sebarang rentetan untuk dimasukkan ke dalam pertanyaan, mengelakkan potensi bercanggah dengan mekanisme melarikan diri CodeIgniter. Walau bagaimanapun, anda dinasihatkan untuk berhati-hati apabila menggunakan pendekatan ini dengan input yang dibekalkan pengguna untuk mengelakkan serangan suntikan SQL.
Perpustakaan Subkueri Dioptimumkan
Sebagai alternatif, pertimbangkan untuk menggunakan subkueri khusus perpustakaan yang boleh meningkatkan kebolehbacaan kod dan memudahkan pertanyaan yang kompleks. Contoh yang diberikan akan diterjemahkan kepada yang berikut:
$this->db->select('*') ->from('certs') ->where('id', $this->subquery->subquery('where_in', function ($subq) { $subq->select('id_cer') ->from('revokace'); }, 'id', FALSE));
Pustaka ini memudahkan pembinaan subkueri dan membolehkan pernyataan SQL yang lebih fleksibel dan ekspresif. Sama ada anda memilih pendekatan rentetan langsung atau menggunakan perpustakaan, kaedah ini memberi kuasa kepada anda untuk melaksanakan subkueri NOT IN dalam CodeIgniter dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan NOT IN Subqueries dengan Pembina Pertanyaan CodeIgniter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!