Wednesday, February 13, 2013

Query SQL dengan Tanda Petik (Quote)

Saya pernah menemui suatu kasus saat melakukan query SQL di aplikasi PHP. Ketika itu suatu variabel yang akan dimasukkan (insert) ke dalam field database terdapat tanda petik satu (quote). Secara otomatis hal tersebut akan berdampak pada gagalnya keseluruhan proses insert.

$nama = "Mar'at Afifah";
$query = "insert into namatabel values ('$nama')";
$cmd = sqlsrv_query($conn, $query, $params, $options);

Variabel $query jika diprint akan menjadi seperti ini:
insert into namatabel values ('Mar'at Afifah')

Tentu saja query tersebut akan error, dan berakibat query tersebut tidak dapat berjalan sehingga tidak berhasil dimasukkan ke dalam database.

Ada beberapa solusi untuk permasalahan tersebut, salah satunya adalah dengan mereplace tanda petik satu (') dengan karakter lain. Saya ambilkan contoh, tanda petik satu akan diganti dengan karakter kosong.

$nama = "Mar'at Afifah";
$query = "insert into namatabel values ('$nama')";
$query2 = str_replace(" ' ", " ", $query);
$cmd = sqlsrv_query($conn, $query2, $params, $options);

Hasil dari fungsi diatas adalah variabel $query2 yang akan dimasukkan ke dalam database menjadi:
insert into namatabel values ('Marat Afifah')

Namun, solusi tersebut masih menyisakan masalah, bagaimana mengenali jika nama tersebut ada tanda petiknya? Hal tersebut bisa diganti dengan karakter lain, bukan karakter kosong, misalnya: | atau & atau #.

Tetapi bagaiaman jika menginginkan hasil yang sama di dalam database dengan yang diinputkan? Dan ternyata solusinya adalah SEBAGAI BERIKUT!!

$query2 = str_replace(" ' ", " ' ' ", $query);

ITU DIA, dengan mengganti tanda petik satu dengan tanda petik satu sebanyak 2 kali. Hasil yang akan masuk ke dalam database akan tetap sama dengan tanda petik satu seperti yang diinputkan, yaitu Mar'at Afifah.

SOLVED ~~

No comments:

Post a Comment