Pada bahasan sekarang kita akan mempelajari perintah-perintah dasar pada database MySQL. Oke langsung saja kita ke pembahasan. Untuk melakukan perintah query SQL di php dibutuhkan fungsi
mysql_query($sql)
untuk menerjemahkan proses query ke MySQL dari PHP. Adapun fungsi lain yang banyak digunakan di PHP adalah mysql_num_rows($query)
yang berfungsi untuk menghitung jumlah baris hasil query dan mysql_fetch_array($query)
atau mysql_fetch_object($query)
. mysql_fetch_array dan mysql_fetch_object memiliki fungsi yang sama, yakni mengambil hasil query SQL agar dapat diolah dan dibaca oleh PHP. Adapun perbedaannya adalah jenis hasil outputnya, kalau mysql_fetch_array outputnya berupa array dengan nama field sebagai key array nnya. Adapun mysql_fetch_object outputnya berupa object, namun yang saya pakai disini adalah yang array.SELECT
SELECT adalah perintah untuk memanggil data yang ada didalam sebuah tabel. Adapun syntaxnya adalah sebagai berikut
SELECT *|field1,field2,field3,... from nama_tabel [kondisi]
NB: simbol artesik/bintang (*) sama artinya memanggil semua field tanpa terkecuali. Untuk pemanggilan field-field tertentu saja dapat langsung disebutkan nama fieldnya
Dari syntax di atas, kita asumsikan bahwa kita mempunyai sebuah tabel siswa dengan kolom-kolom: NIS,Nama,Gender,Kelas dengan data kira-kira seperti berikut
No | NIS | Nama | Gender | Kelas |
---|---|---|---|---|
1 | 030411021 | Aat Surahat | P | X-1 |
2 | 030411092 | Beno Sudrajat | L | X-2 |
3 | 030411047 | Cepi Rohmat | L | X-1 |
4 | 030411017 | Novi Andaresi | P | X-3 |
5 | 030411025 | Niar Wahyuni | P | X-3 |
Kalo kita ingin mengambil semua data yang ada di tabel siswa tanpa terkecuali, gunakan perintah seperti berikut!
Dengan perintah di atas, maka semua data akan dipanggil (dipanggil semua baris), adapun field yang ditampilkan adalah tergantung keperluan (pada contoh di atas field dipanggil semua)
Yang berikutnya adalah cara mengambil beberapa data saja. Perhatikan contoh berikut!
Jika dilihat di browser, maka outputnya di browser adalah seperti dibawah ini
NIS | Nama | Gender | Kelas |
---|---|---|---|
030411017 | Novi Andaresi | P | X-3 |
030411025 | Niar Wahyuni | P | X-3 |
Jika kita melihat script di atas, ada yang saya garisbawahi, yakni where kelas='X-3'. Apakah fungsinya? Di dalam query SQL, khususnya di MySQL where adalah suatu cara mempersempit data yang ditampilkan dengan memberikan kondisi seperti halnya if di PHP. Adapun syntaxnya secara umum adalah sebagai berikut!
SELECT ... where field<kondisi><nilai yang dibandingkan>
Keterangan:
field: nama field yang akan dicari kondisi nilainya
kondisi: kondisi perbandingan yang bisa diisi dengan sama dengan (=), kurang dari (<), lebih dari (>), kurang dari atau sama dengan (<=), lebih dari atau sama dengan (>=) dan tidak sama dengan (!=)
nilai yang dibandingkan: yakni nilai dari perbandingan yang disesuaikan dengan kondisi
field: nama field yang akan dicari kondisi nilainya
kondisi: kondisi perbandingan yang bisa diisi dengan sama dengan (=), kurang dari (<), lebih dari (>), kurang dari atau sama dengan (<=), lebih dari atau sama dengan (>=) dan tidak sama dengan (!=)
nilai yang dibandingkan: yakni nilai dari perbandingan yang disesuaikan dengan kondisi
Perlu diperhatikan, bahwasanya jika field yang ditampilkan dikondisikan perbandingan angka maka nilai yang dibandingkan ini boleh tidak pakai petik, namun jika yang dibandingkan adalah sebuah string atau data tanggal, maka diharuskan menyertakan petik pada nilainya. Perhatikan contoh berikut ini!
INSERT
INSERT adalah perinta untuk melakukan input data kedalam tabel. Syntax dasar insert dapat dilihat seperti di bawah ini:
INSERT into namaTabel(field1,field2,field3,...) VALUES('nilai 1','nilai 2','nilai 3',...)
Sekedar mengingatkan saja, karena saya pribadi pernah mengalami suatu hal yang mulanya bikin saya bingung, dan kali ini akan saya coba share kepada sahabat AJN semuanya yakni seputar data yang di-insert kedalam tabel. Jadi, ketika kita melakukan insert data ke MySQL inputannya harus diperhatikkan dan perlu diparsing (difilter) untuk menjaga keamanan data. Istilah yang dikenal dari proses SQL query secara paksa (hack) adalah mysql inject. Sebagai contoh, kita tidak bisa meng-insert data yang mengandung petik satu kedalam tabel tanpa difilter. Untuk memfilter data yang diinput (kalo inputan ketikan bebas oleh user via input text atau textarea) adalah menggunakan fungsi
mysql_real_escape_string($string)
. Dengan demikian data yang diinput menjadi aman dan terhindar dar injeksi.
Yuk kita lihat contoh berikut
UPDATE
Berbeda halnya dengan SELECT, query update ini bekerja dibalik layar dan tidak menampilkan hasil apapun karena update bukanlah perintah tetapi merupakan proses. Untuk syntax update ini dapat dilihat di bawah ini
UPDATE namaTabel set field1='nilai baru field1', field2='nilai baru field2', field3='nilai baru field3',... [kondisi where]
Keterangan: field1,field2, field3, dst: nama field yang ingiin diupdate nilainya (disesuaikan dengan nama field pada tabel) kondisi where: sifatnya optional, namun bila tanpa kondisi semua data akan diupdate, jadi harap berhati-hati!
NB: harap diperhatikan.... dalam penggunaan query UPDATE ini saya sangat menganjurkan untuk memberikan kondisi. Kenapa demikian? Karena bilai kita tidak mempersempit kondisi maka semua data akan ikut keupdate atau keubah. Bayangkan, bila kita mempunyai data sebanyak 2000 data, lalu kita ingin mengubah data ke 780, namun kita kelupaan memberikan kondisi where, maka yang terjadi adalah semua data (yang 2000 baris) itu akan semuanya keupdate. Sayang kan udah cape-cape input eh keubah gitu aja, hilang deh. Contoh detailnya adalah ketika tabel siswa sudah lengkap semua mulai kelas X sampai kelas XII. Lalu data ke 100 ternyata salah, ditabel kelasnya adalah XI-IPA-1, padahal harusnya XI-BAHASA, maka yang kita lakukan adalah membuat script seperti di bawah ini!
Query pertama adalah query yang benar, dimana data yang NIS-nya 13141159 akan diubah data kelasnya menjadi XI-BAHASA. Adapun query kedua adalah query yang fatal salahnya, kenapa? bila query tersebut dijalankan maka seluruh data di tabel siswa kelasnya akan menjadi 'XI-BAHASA' meskipun datanya 2000 data siswa. Jadi, kembali saya ingatkan, harap berhati-hati dengan query UPDATE. Kasus ini masih saja terjadi, mungkin akibat kurang jeli dalam mengecek, atau terlalu terburu-buru atau penyebab lainnya. Yang pasti UPDATE tanpa where adalah merubah semua data yang ada di tabel tersebut. Kecuali kalau kita memang menginginkan update untuk seluruh data pada tabel.
DELETE
Untuk query DELETE ini kasusnya sama dengan UPDATE, namun yang membedakan adalah fungsinya. DELETE pada query MySQL berfungsi untuk menghapus data (satu baris atau lebih) jika where yang diberikan adalah spesifik, dan tentu akan menghapus semua data di tabel jika tidak ditambahkan where. Syntax DELETE ini adalah seperti berikut
DELETE from namaTabel [kondisi where]
Yuk kita lihat dari contoh berikut!
Query pertama akan menghapus data yang NIS-nya 13141159 saja (1 baris), adapun untuk query kedua adalah menghapus semua data yang kelasnya adalah XI-BAHASA (beberapa baris data siswa). Sedangkan query ketiga akan menghapus semua data siswa (tabel jadi kosong)