MENGENAL
FUNGSI PHP UNTUK PENGAMBILAN DATA MYSQL: MYSQL_FETCH_*
PHP dan MySQL,
seolah pasangan sejati yang tak terpisahkan. Keduanya paling sering
disandingkan dalam pembuatan aplikasi berbasis web (web application
development). Tak heran jika begitu banyak fungsi terkait dengan MySQL yang
disediakan oleh PHP. Setidaknya terdapat 45 fungsi PHP terkait
dengan MySQL mulai dari koneksi, pengambilan data, query data hingga informasi
server MySQL.
Dalam tutorial ini akan dikenalkan berbagai fungsi PHP
terkait dengan pengambilan data MySQL. Pengambilan data yang
dimaksud disini tepatnya adalah pengolahan hasil perintah query SELECT yang
dihasilkan dari fungsi mysql_query(). Hasil perintah query dapat diolah untuk
ditampilkan atau diproses oleh PHP melalui berbagai fungsi yang diawali dengan mysql_fetch_*.
Terkait hal tersebut, PHP memiliki 6 (enam) fungsi yaitu: mysql_fetch_array(),
mysql_fetch_assoc(), mysql_fetch_field(), mysql_fetch_lengths(),
mysql_fetch_object() dan mysql_fetch_row().
Dalam tutorial ini akan dijelaskan kegunaan dari 4
(empat) fungsi yaitu mysql_fetch_array(), mysql_fetch_assoc(),
mysql_fetch_object() dan mysql_fetch_row(). Sementara dua
fungsi lainnya yaitu mysql_fetch_field() dan mysql_fetch_lengths() tidak
dijelaskan di tutorial ini karena keduanya tidak terlalu berkaitan dengan
pengambilan data MySQL, selain itu keduanya akan dihilangkan setelah PHP versi
5.5.0.
Untuk keperluan contoh program dalam tutorial ini,
kita akan menggunakan struktur tabel “mahasiswa” sebagai berikut:
FIELD
|
TYPE
|
LENGTH
|
DESCRIPTION
|
Nim
|
VARCHAR
|
10
|
NIM Mahasiswa
|
Nama
|
VARCHAR
|
30
|
NAMA
Mahasiswa
|
Alamat
|
TEXT
|
–
|
Alamat
Mahasiswa
|
Dan berikut ini isi dari tabel mahasiswa tersebut:
mysql>
select * from mahasiswa;
+------------+-----------------------+---------------------------------------------------------+
| nim
| nama | alamat |
+------------+-----------------------+---------------------------------------------------------+
|
0111500382 | Achmad Solichinn | Jl. Raya Ciledug, Jakarta Selatan |
|
0411500300 | Chotimatul Musyarofah | Peninggilan, Kec. Ciledug, Tangerang,
Banten, Indonesia |
|
0911500292 | Muhammad Lintang | Jakarta Selatan, DKI Jakarta |
|
1011500101 | Budi Susanto | Jl. Ciledug Raya, Petukangan Utara |
+------------+-----------------------+---------------------------------------------------------+
mysql_fetch_array()
: Array asosiatif dan Array numerik
Fungsi mysql_fetch_array() merupakan
salah satu fungsi yang banyak digunakan dalam proses pengambilan data MySQL.
Fungsi ini akan menangkap data dari hasil perintah query dan membentuknya ke
dalam array asosiatif dan array numerik. Jadi, fungsi mysql_fetch_array()
menawarkan kemudahan dan fleksibilitas dalam mengakses data. Namun demikian,
penggunaan fungsi ini dianggap kurang efektif dari sisi performa karena terlalu
“boros” penyimpanan.
Untuk memberikan gambaran bagaimana penggunaan fungsi mysql_fetch_array(), perhatikan contoh berikut ini:
Untuk memberikan gambaran bagaimana penggunaan fungsi mysql_fetch_array(), perhatikan contoh berikut ini:
4.
6. echo "<h3>mysql_fetch_array
cara array asosiatif</h3>";
8. echo $baris['nim']. " ". $baris['nama']. "<br/>";
9. }
10.
12.echo "<h3>mysql_fetch_array
cara array numerik</h3>";
14. echo $baris[0]. " ". $baris[1]. "<br/>";
15.}
16.
18.echo "<h3>Struktur
array (mysql_fetch_array)</h3>";
20. echo "<pre>";
22. echo "</pre>";
23.}
24.
25.?>
Seperti sudah dinyatakan sebelumnya bahwa fungsi mysql_fetch_array() akan
menghasilkan struktur data dalam bentuk array asosiatif maupun array numerik.
Pada contoh diatas, dengan menggunakan fungsi mysql_fetch_array(), dapat
ditampilkan nilai dari masing-masing baris hasil perintah query SELECT. Cara
menampilkan data dapat menggunakan “gaya” array asosiatif seperti terlihat pada
baris ke-8 dimana nama field akan menjadi index array, dan juga dapat
menggunakan “gaya” array numerik seperti terlihat pada baris ke-14 dimana
indexnya berupa nilai numerik sesuai urutan field hasil perintah query SELECT.
Urutan numerik tersebut diawali dari 0.
Struktur array yang dihasilkan oleh fungsi
mysql_fetch_array() dapat diketahui dengan menggunakan fungsi print_r() seperti
perintah pada baris ke-21. Hasilnya akan terlihat seperti pada gambar berikut
ini:
mysql_fetch_assoc()
: Array asosiatif saja
Dalam hal pengambilan data MySQL, saat ini saya lebih
sering menggunakan fungsi mysql_fetch_assoc() dibanding fungsi
lainnya. Fungsi ini menghasilkan array asosiatif yang mana index-nya sesuai
dengan nama kolom yang diseleksi. Mudahnya, tidak tergantung pada urutan kolom,
yang penting index-nya sesuai. Dari sisi programmer juga menjadi lebih
informatif. Untuk memberikan gambaran bagaimana penggunaan fungsi
mysql_fetch_assoc(), perhatikan contoh berikut ini:
4.
6. echo "<h3>mysql_fetch_assoc
cara array asosiatif</h3>";
8. echo $baris['nim']. " ". $baris['nama']. "<br/>";
9. }
10.
12.echo "<h3>Struktur
array (mysql_fetch_assoc)</h3>";
14. echo "<pre>";
16. echo "</pre>";
17.}
18.?>
Tidak seperti mysql_fetch_array(), fungsi mysql_fetch_assoc() hanya
menghasilkan array asosiatif dimana index-nya merepresentasikan nama kolom yang
diseleksi. Pada program di atas terlihat bahwa pada baris ke-8, untuk setiap
baris hasil perintah query akan ditampilkan nilainya. Sementara itu, jika
dilihat dari strukturnya, mysql_fetch_assoc() hanya menghasilkan array
asosiatif seperti terlihat pada potongan tampilan program 2 di atas berikut
ini.
mysql_fetch_row() :
Array numerik saja
Untuk kasus-kasus tertentu, saya terkadang lebih
memilih menggunakan fungsi mysql_fetch_row()dibanding yang lainnya.
Contohnya pada saat saya ingin mengambil jumlah hasil perintah query dengan
menggunakan fungsi COUNT() di MySQL. Program berikut ini akan menampilkan
jumlah record dengan fungsi COUNT() dan diambil dengan fungsi
mysql_fetch_row(). Pada bagian akhir program juga ditampilkan struktur array
dengan perintah mysql_fetch_row().
4.
7. echo "Jumlah data:
". $baris[0]. "<br/>";
8.
10.echo "<h3>Struktur
array (mysql_fetch_row)</h3>";
12. echo "<pre>";
14. echo "</pre>";
15.}
16.?>
mysql_fetch_object()
: Gaya object-oriented
Fungsi mysql_fetch_object() akan
menyajikan hasil perintah query dalam gaya penulisan object oriented. Sama
seperti mysql_fetch_assoc(), fungsi ini menjadikan nama kolom hasil perintah
query menjadi property dari obyek. Contoh penggunaannya tampak pada program 4
di bawah ini. Penggunaan fungsi ini sebaiknya dihindari untuk keperluan
mendatang karena fungsi ini akan deprecated pada versi PHP
5.5.0 dan akan dihilangkan pada versi selanjutnya.
1. <?php
4.
6. echo "<h3>mysql_fetch_object</h3>";
8. echo $baris->nim. " ". $baris->nama. "<br/>";
9. }
10.?>
Perbandingan
Kecepatan
Untuk menguji kecepatan dari keempat fungsi di atas,
saya mencoba melakukan pengujian dengan menerapkan keempat fungsi untuk
mengambil data yang berjumlah 1.135.392 record. Hasilnya sebagai
berikut:
mysql_fetch_array()
: 18.302305936813 detik
mysql_fetch_assoc()
: 16.9645819664 detik
mysql_fetch_row()
: 16.664786100388 detik
mysql_fetch_object()
: 35.827367067337 detik
Perbandingan
Kecepatan Fungsi
Jadi, mana yang sebaiknya digunakan dalam
pengambilan data dari database MySQL? Dari pengujian sederhana di atas, yang
jelas kita sebaiknya menghindari penggunaan fungsi mysql_fetch_object() karena
disamping paling buruk dari sisi kecepatan, juga karena fungsi tersebut akan
segera dihilangkan dari fungsi bawaan PHP. Selanjutnya, untuk ketiga fungsi
lainnya masih layak untuk digunakan karena secara kecepatan hampir seimbang.
Pilihannya tinggal menyesuaikan kebutuhan programmer.
Sebagai masukan, berkaitan dengan komunikasi antara
PHP dengan database MySQL, kita sebaiknya mulai beralih dari penggunaan fungsi mysql_* menjadi
fungsi mysqli_* atau gunakan abstraction layer
database. Sebagai informasi awal, MySQLi (mysql improved) merupakan library
mysql yang telah ditingkatkan kemampuan, kecepatan dan performanya. Semoga di
tutorial mendatang, kita dapat membahas mengenai library MySQLi tersebut.
0 komentar:
Posting Komentar