Tutorial PHP ARI JULIANTO Network
Beberapa Perintah Dasar MySQL (select, insert, update dan delete)
Pada
bahasan sebelumnya, kita telah mempelajari bagaimana melakukan koneksi
PHP ke database MySQL, dan sekarang adalah waktunya untuk 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 fieldnyaDari 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 |
- <?php
- mysql_connect("localhost", "root", "") or die("Gagal koneksi...");
- mysql_select_db("test") or die("Tidak bisa membuka database");
- echo "<table border=1>
- <tr>
- <th>NIS</th>
- <th>>Nama</th>
- <th>Gender</th>
- <th>Kelas</th>
- </tr>";
- $sql = mysql_query("SELECT * from siswa");
- while($data = mysql_fetch_array($sql)){
- echo "<tr>
- <th>$data[NIS]</th>
- <th>>$data[Nama]</th>
- <th>$data[Gender]</th>
- <th>$data[Kelas]</th>
- </tr>";
- }
- echo "</table>";
- ?>
Yang berikutnya adalah cara mengambil beberapa data saja. Perhatikan contoh berikut!
- <?php
- mysql_connect("localhost", "root", "") or die("Gagal koneksi...");
- mysql_select_db("test") or die("Tidak bisa membuka database");
- echo "<table border=1>
- <tr>
- <th>NIS</th>
- <th>>Nama</th>
- <th>Gender</th>
- <th>Kelas</th>
- </tr>";
- $sql = mysql_query("SELECT * from siswa where Kelas='X-3'");
- while($data = mysql_fetch_array($sql)){
- echo "<tr>
- <th>$data[NIS]</th>
- <th>>$data[Nama]</th>
- <th>$data[Gender]</th>
- <th>$data[Kelas]</th>
- </tr>";
- }
- echo "</table>";
- ?>
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
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!
- <?php
- mysql_query("SELECT * from siswa where kelas='X-3'"); // nilai field kelas adalah string
- mysql_query("SELECT * from laporan_penjualan where qty_barang>5") // nilai field qty_barang adalah numerik
- ?>
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
Yuk kita lihat contoh berikutmysql_real_escape_string($string)
. Dengan demikian data yang diinput menjadi aman dan terhindar dar injeksi.
- <?php
- $nis = $_POST['nis'];
- $nama = mysql_real_escape_string($_POST['nama']);
- $gender = $_POST['gender'];
- $kelas = $_POST['kelas'];
- mysql_query("INSERT into siswa(NIS,Nama,Gender,Kelas) VALUES('$nis','$nama','$gender','$kelas')");
- ?>
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!
- <?php
- mysql_query("UPDATE siswa set kelas='XI-BAHASA' where NIS='13141159");
- mysql_query("UPDATE siswa set kelas='XI-BAHASA'");
- ?>
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!
- <?php
- mysql_query("DELETE from siswa where NIS='13141159");
- mysql_query("DELETE from siswa where kelas='XI-BAHASA'");
- mysql_query("DELETE from siswa");
- ?>
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)
0 komentar:
Post a Comment