Azwar

Berbagi cerita dan informasi

Tutorial CodeIgniter – Query untuk searching data

Ada sedikit masalah pada CodeIgniter versi 1.7.3 berkenaan dengan Active Record.

Masalah yang saya maksudkan adalah, ketika saya menggunakan fungsi like() pada active record. Fungsi tersebut hanya mau menghasilkan pencarian dengan 1 kata saja. Contoh saya mencari kata ‘aku’ pada kalimat ‘Siapa aku ini’. Dengan pencarian 1 kata tersebut, CodeIgniter (CI) versi 1.7.3 mau menghasilkan query. Namun ketika saya mencari lebih dari 1 kata, misalkan ‘aku ini’ maka resultset nya 0 alias tidak ketemu.

Hmmm…. saya berburu info di internet, tapi tak saya temukan info berguna, mungkin juga saya-nya yang kurang teliti dalam berburu info. Hehe… Yasudah tidak apa-apa, perjuangan tetap berlanjut.

Kemudian, akhirnya saya pake cara jantan, alias cara manual. Biasa lahh… The Power of Simplicity. 😀 Nah itu, kalo sesuatu tidak bisa dihandle oleh hal yang sedikit kompleks, maka cara simpel bisa menjadi obat. Karena simpel itu lah kita bisa memvariasikannya supaya jadi lebih fleksibel. Ups malah ngobrol. Ayo kita selesaikan tutorialnya.

Ya, akhirnya saya menggunkana cara manual. Dengan menggunakan fungsi query($string_query). Yah.. tak masalah, sama-sama query bukan?

Jika menggunakan Active record bentuknya seperti ini:


        	$this->db->like($word, $type);
        	$this->db->or_like($word, $type, 'before');
        	$this->db->or_like($word, $type, 'after');
        	$query = $this->db->get('article'); 

dan dengan menggunakn query manual menjadi seperti ini:

			$query = $this->db->query("
				SELECT *
				FROM `article`
				WHERE `$type` LIKE '%$word%' OR `$type` LIKE '%$word' OR `$type` LIKE '$word%'
			"); 

namun query ini sangat rentan terhadap injeksi,
jadi kita ubah dengan query berparameter, dalam java namanya prepared statement.
Jadinya seperti ini:

        	$sql = "
				SELECT *
				FROM `article`
				WHERE `$type` LIKE '%$word%' OR `$type` LIKE '%$word' OR `$type` LIKE '$word%'
			"; 
        	$query = $this->db->query($sql, array($type, $word, $type, $word, $type, $word,)); 

Perhatikan, parameternya harus urut (urutannya sesuai) dengan yang ada di syntax query.

Semoga bisa menjadi tambahan referensi.
Terimakasih.

Iklan

3 responses to “Tutorial CodeIgniter – Query untuk searching data

  1. arifamrullah Februari 25, 2015 pukul 10:25 am

    Kalo controller nya kayak gimana gan?

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: