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:
<?php
-
-
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>mysql_fetch_array cara array asosiatif</h3>";
-
echo $baris['nim']. " ". $baris['nama']. "<br/>";
}
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>mysql_fetch_array cara array numerik</h3>";
-
echo $baris[0]. " ". $baris[1]. "<br/>";
}
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>Struktur array (mysql_fetch_array)</h3>";
-
echo "<pre>";
-
echo "</pre>";
}
?>
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:
<?php
-
-
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>mysql_fetch_assoc cara array asosiatif</h3>";
-
echo $baris['nim']. " ". $baris['nama']. "<br/>";
}
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>Struktur array (mysql_fetch_assoc)</h3>";
-
echo "<pre>";
-
echo "</pre>";
}
?>
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().
<?php
-
-
-
-
echo "Jumlah data: ". $baris[0]. "<br/>";
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>Struktur array (mysql_fetch_row)</h3>";
-
echo "<pre>";
-
echo "</pre>";
}
?>
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.
<?php
-
-
$sql = mysql_query ("SELECT nim, nama FROM mahasiswa");
echo "<h3>mysql_fetch_object</h3>";
-
echo $baris->nim. " ". $baris->nama. "<br/>";
}
?>
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.
Semoga tutorial ini bermanfaat untuk
kita semua dan berbagilah hal baik ke sebanyak-banyaknya orang maka
kebahagiaan akan menghampiri Anda. Satu Karya untuk Indonesia!
Download Tutorial