Selain menggunakan fungsi mysql_fetch_row(), PHP juga menyediakan fungsi lain untuk menampilkan data dari MySQL, yakni fungsi mysql_fetch_array(). Dalam tutorial kali ini kita akan membahas cara penggunaan fungsi mysql_fetch_array(), dan perbedaanya dengan mysql_fetch_row().
Menampilkan Tabel MySQL dengan fungsi mysql_fetch_array
Fungsi mysql_fetch_array() pada dasarnya hampir sama dengan fungsi mysql_fetch_row(), namun fungsi mysql_fetch_array() memberikan alternatif cara menampilkan data MySQL dengan lebih mudah.
Jika dalam fungsi mysql_fetch_row() hasil fungsinya berupa array dengan key atau indexnya berupa angka, seperti : $row[1], $row[2] dan $row[3], maka di dalam mysql_fetch_array(), kita bisa menggunakan nama kolom dari tabel MySQL sebagai key atau index array seperti berikut ini: $row['nim'], $row['nama'] dan $row['umur']. Cara penulisan seperti ini akan memudahkan pembuatan program.
Selain menggunakan nama kolom pada index array, fungsi mysql_fetch_array() juga bisa menggunakan index penomoran kolom seperti mysql_fetch_row(), atau bahkan keduanya sekaligus. Untuk mengatur fitur ini, fungsi mysql_fetch_array() membutuhkan parameter tambahan.
Berikut adalah format dasar penulisan fungsi mysql_fetch_array() dalam PHP:
$row= mysql_fetch_array($result,['tipe_hasil'])
- $row adalah variabel yang akan menampung hasil fungsi mysql_fetch_array(). Hasil dari fungsi mysql_fetch_array() berupa tipe data array dengan key yang bergantung kepada konstanta 'tipe_hasil'.
- $result adalah variabel hasil menjalankan query MySQL yang berasar dari fungsi mysql_query().
- 'tipe_hasil' merupakan konstanta opsional yang digunakan untuk mengatur index array dari hasil fungsi mysql_fetch_array(). Konstanta yang bisa digunakan adalah salah satu dari ketiga nilai berikut: MYSQL_NUM, MYSQL_ASSOC atau MYSQL_BOTH. Jika argumen ini tidak ditulis, nilai defaultnya adalah MYSQL_BOTH.
Perbedaan mysql_fetch_array: MYSQL_NUM, MYSQL_ASSOC dan MYSQL_BOTH
Cara mengakses array dari fungsi mysql_fetch_array() bergantung kepada argumen 'tipe_hasil'. Argumen 'tipe_hasil' hanya bisa berisi satu dari 3 konstanta: MYSQL_NUM, MYSQL_ASSOC atau MYSQL_BOTH.
Jika argumen keduadari fungsi mysql_fetch_array() diisi MYSQL_NUM, maka index array akan menjadi angka (sama seperti hasil mysql_fetch_row()), dan bisa ditampilkan seperti: $row[1], $row[2] dan $row[3].
Jika argumen kedua diisi MYSQL_ASSOC, index array akan menjadi nama kolom, dan bisa ditampilkan seperti: $row['nim'], $row['nama'] dan $row['umur'].
Opsi ketiga, jika argumen diisi MYSQL_BOTH maka index array mendukung 2 pemanggilan, yakni berupa angka dan nama kolom.
Sama seperti fungsi mysql_fetch_row(), mysql_fetch_row() hanya membaca 1 baris pada sekali pemanggilan. Jika tabel kita terdiri dari 5 baris, maka fungsi mysql_fecth_array() harus diulang sebanyak 5 kali (atau menggunakan metoda perulangan while seperti yang kita lakukan pada tutorial mysql_fetch_row().
Cara Penggunaan Fungsi mysql_fecth_array()
Agar lebih mudah dipahami, langsung saja kita masuk kedalam contoh kode program. Masih menggunakan contoh database universitas yang dibuat pada tutorial mysql_fetch_row(), kali ini saya akan menggunakan fungsi mysql_fetch_array() untuk menampilkan hasilnya.
Berikut adalah contoh penggunaan fungsi mysql_fetch_array() dalam PHP:
<?php //buat koneksi dengan MySQL $link=mysql_connect('localhost','root',''); Â //gunakan database universitas $result=mysql_query('USE universitas'); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â //tampilkan tabel mahasiswa_ilkom $result=mysql_query('SELECT * FROM mahasiswa_ilkom'); while ($row=mysql_fetch_array($result, MYSQL_NUM)) { echo "$row[0] $row[1] $row[2] $row[3] $row[4]"; echo "<br />"; } ?>
Dalam contoh diatas, baris 1-6 merupakan kode program untuk membuat koneksi dengan MySQL. Pada baris ke-9, saya membuat query 'SELECT * FROM mahasiswa_ilkom' yang akan mengembalikan seluruh isi tabel mahasiswa_ilkom.
Jika diperhatikan, kode program diatas sama persis dengan contoh terakhir pada tutorial mysql_fetch_row(), hanya pada baris ke 10 saya menggantinya dengan fungsi mysql_fetch_array().
Konstanta MYSQL_NUM pada argumen ke-2 fungsi mysql_fetch_array(), menginstruksikan kepada PHP bahwa nilai kembalian untuk variabel $row adalah array dengan index angka, sehingga hasilnya sama persis dengan mysql_fetch_row() yang diakses dengan $row[0] untuk kolom pertama tabel, $row[1] untuk kolom kedua tabel, dan seterusnya.
Jika menggunakan konstanta MYSQL_NUM akan membuat fungsi mysql_fetch_array() sama dengan mysql_fetch_row(), bagaimana dengan MYSQL_ASSOC? Dalam contoh berikut, saya akan mengubah konstanta fungsi mysql_fetch_array() dengan MYSQL_ASSOC :
<?php //buat koneksi dengan MySQL $link=mysql_connect('localhost','root',''); Â //gunakan database universitas $result=mysql_query('USE universitas'); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â //tampilkan tabel mahasiswa_ilkom $result=mysql_query('SELECT * FROM mahasiswa_ilkom'); while ($row=mysql_fetch_array($result,MYSQL_ASSOC)) { echo $row['nim']." ".$row['nama']." ".$row['umur']." "; echo $row['tempat_lahir']." ".$row['IPK']; echo "<br />"; } ?>
Pada contoh kali ini, pada baris ke-10, fungsi mysql_fetch_array() saya panggil dengan konstanta MYSQL_ASSOC sebagai argumen kedua. Dengan cara ini, hasil kembalian query, berupa array dengan index nama kolom dari tabel MySQL.
Karena menggunakan konstanta MYSQL_ASSOC, cara pengaksesan nilai $row harus menggunakan index nama kolom tabel. Jika di dalam MySQL nama kolom adalah 'nim', maka untuk menampilkan data kolom tersebut, kita menggunakan $row['nim']. Jika di dalam MySQL nama kolom adalah 'tempat_lahir', untuk menampilkan data kolom tersebut, adalah dengan $row['tempat_lahir'], dan seterusnya.
Dengan cara ini, kita akan mudah untuk merancang tampilan tabel MySQL, terutama jika urutan kolom tidak ditampilkan secara berurutan.
Untuk pilihan konstanta terakhir: MYSQL_BOTH, MySQL akan mengembalikan nilai $row yang bisa diakses baik dengan index angka maupun dengan index nama kolom. Berikut adalah contoh kode programnya:
<?php //buat koneksi dengan MySQL $link=mysql_connect('localhost','root',''); Â //gunakan database universitas $result=mysql_query('USE universitas'); Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â //tampilkan tabel mahasiswa_ilkom $result=mysql_query('SELECT * FROM mahasiswa_ilkom'); while ($row=mysql_fetch_array($result,MYSQL_BOTH)) { echo $row[0]." ".$row['nama']." ".$row['umur']." "; echo $row[3]." ".$row['IPK']; echo "<br />"; } ?>
Seperti yang terlihat, saya membuat perintah $row[0] dan $row['nama'] dalam pemanggilan yang sama, dan PHP dapat menampilkan hasil sesuai dengan yang diharapkan.
Pada dasarnya, pengaksesan MySQL melalui PHP, hanya membutuhkan 3 fungsi utama, yakni mysql_connect(), mysql_query(), dan mysql_fecth_array(). Sampai disini, kita telah mempelajari ketiga fungsi penting tersebut.
Dalam tutorial selanjutnya, kita akan mempelajari cara menampilkan pesan error dari MySQL ketika query yang dijalankan tidak sesuai.
maaf gan, saya ingin mengambil template dengan menggunakan sricpt mysqli_fecth_array namun templatenya tetap tidak tertambil , berikut script yang saya gunakan, mohon di koreksi.
$pilih_template=mysqli_query($con, "SELECT folder FROM templates WHERE aktif='Y'");
$f=mysqli_fetch_array($pilih_template,MYSQLI_BOTH);
include "rss.php";
include "$f[folder]/template.php";
?>
Saya belum bisa bantu nih gan, soalnya banyak kemungkinan error, bisa jadi query MySQLnya yang salah, atau dari kode PHPnya. Mesti lihat keseluruhan kode program (yang pastinya makan waktu lama). Tp solusi paling dasar, pastikan querynya sudah Ok dengan cara menjalankan langsung dari PHPmyadmin, coba periksa apakah "SELECT folder FROM templates WHERE aktif='Y" memang sudah menampilkan kolom yang sesuai atau tidak.
Tp saya lihat sekilas, kode include "$f[folder]/template.php" hasilnya seperti apa gan? soalnya $f adalah hasil dari fungsi mysqli_fetch_array(). Biasanya kita harus akses sebagai: "$f['folder']/template.php" (jangan lupa tanda kutipnya).
bagaimana jika kita ungin menggunakan satu kali while dengan dua query, lebih jelasnya bisa klik link ini http://pastebin.com/yiHYXiL9
mau tanya, kalau saya selalu buat fungsi tersebut selalu muncul error seperti ini :
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
itu kenapa ya?
nb : koneksi ke databasenya berhasil
Jika menggunakan mysqli_fetch_array, parameternya memang berbeda dengan mysql_fetch_array seperti di halaman ini. Untuk lebih jelasnya bisa langsung ke https://www.duniailkom.com/tutorial-php-mysql-cara-menampilkan-data-dengan-mysqli-procedural-style/
mau tanya, untuk menampilkan query tapi di jeda setelah pengulangan ke 5, gimana ya? misal mepilkan tabel A sebanyak 100 dan setiap pengulan 5x di tambahkan iklan lalu di lanjutkan, dengan menggunkan mysql_fecth_array
Mungkin bisa diakali dengan membuat sebuah flag atau variabel bantu. Setiap kali perulangan, variabel bantu ini akan naik 1 angka. Lalu buat sebuah kondisi if untuk memeriksa apakah variabel bantu sudah berisi angka kelipatan 5 atau belum.
mau tanya nih soal ny ketemu error :
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean
di bagian :
if ($data = mysqli_fetch_array($ambil_data, MYSQLI_BOTH))
dari code ini nih :
$sql="SELECT TOP 1 room_id AS rome FROM roomplayzzz where room_vail = '0'";
$ambil_data = mysqli_query($con,$sql);
if ($data = mysqli_fetch_array($ambil_data, MYSQLI_BOTH))
{
$rome = 0;
$rome = $data["rome"];
}
Error "Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean" merupakan pesan kesalahan yang terjadi karena ada yang salah di penulisan query MySQL.
Silahkan di periksa dulu apakah query $sql itu penulisannya sudah benar atau belum. Silahkan test "echo $sql" lalu jalankan di cmd MySQL Client atau phpmyadmin.
mohon bantuanx agan2…
pesan Error :
Parse error: syntax error, unexpected 'rss' (T_STRING), expecting ')' in D:\xampp\htdocs\webdesa\media.php on line 22
mohon bantuanx agan2…
pesan Error :
Parse error: syntax error, unexpected 'rss' (T_STRING), expecting ')' in D:\xampp\htdocs\webdesa\media.php on line 22
// Panggil semua fungsi yang dibutuhkan (semuanya ada di folder config)
include "config/koneksi.php";
include "config/fungsi_indotgl.php";
include "config/class_paging.php";
include "config/fungsi_combobox.php";
include "config/library.php";
include "config/fungsi_autolink.php";
include "config/fungsi_badword.php";
include "config/fungsi_kalender.php";
include "config/fungsi_thumb.php";
include "config/option.php";
// Memilih template yang aktif saat ini
$pilih_template=mysqli_query($con,"SELECT folder FROM templates WHERE aktif='Y'");