Database

Prepared Statement untuk Operator Like pada PostgreSQL

Logo PostgreSQL

Baru-baru ini saya melakukan update untuk sebuah aplikasi yang menggunakan PostgreSQL sebagai mesin basis datanya. Salah satu yang saya lakukan adalah  melakukan update  pada query-query  dengan menggunakan Prepared Statement.

Prepared Statement digunakan untuk melindungi basis data dari SQL Injection. Ketika prepared statement dieksekusi,basis data akan menganalisa dan memastikan parameter-parameter yang dimasukkan ke dalam database sesuai dengan tipe data kolom yang digunakan.

Operator Like

Operator LIKE di dunia basis data digunakan dalam klausa WHERE untuk mencari dengan sebuah pola yang spesifik di dalam sebuah kolom.

Contoh 1:

SELECT nama_buah FROM buah WHERE nama_buah LIKE 'm%';

Maka akan didapat nama-nama buah berawalan huruf M, seperti mangga, manggis dan lain-lain.

Contoh 2:

SELECT nama_buah FROM buah WHERE nama_buah LIKE '%u';

Maka akan didapat nama-nama buah berakhiran huruf U, seperti jambu, duku dan lain-lain.

Contoh 3:

SELECT nama_buah FROM buah WHERE nama_buah LIKE '%m%';

Maka akan didapat nama-nama buah yang memiliki huruf M, seperti mangga, jambu, ataupun plum dan lain-lain.

LIKE dalam Prepared Statement

Lalu bagaimana menggunakan operator LIKE di dalam sebuah Prepared Statement?

Pada basis data MySQL dengan menggunakan ADODb sebagai database abstraction library maka kita dapat menggunakan perintah sebagai berikut:

$query = $DB->Prepare('
    SELECT nama_buah
    FROM buah
    WHERE nama_buah LIKE CONCAT ("%", ?, "%")
');
$result = $DB->GetAll($query, array('m'));

Bagaimana dengan PostgreSQL? Karena PostgreSQL tidak dapat menggunakan CONCAT, maka dapat dilakukan dengan cara:

$query = $DB->Prepare('
    SELECT nama_buah
    FROM buah
    WHERE nama_buah LIKE ?
');
$result = $DB->GetAll($query, array('%m%'));

Semoga bermanfaat.

Leave a Reply

Theme by Anders Norén