Cara menggunakan apa itu mysqli_fetch_row?

Setelah sebelumnya kita bahas mengenai cara menghubungkan MySQL dengan PHP, pada kesempatan kali ini kita akan membahas bagaimana cara menampilkan data tabel MySQL Dengan PHP.

Telah disebutkan pada artikel tersebut bahwa kita tidak disarankan menggunakan fungsi yang berawalan mysql_ seperti mysql_connect(), dll, karena fungsi tersebut sudah dihapus pada PHP versi 7, sehingga aplikasi kita dijamin ke depan tidak akan berjalan lagi.

Untuk itu pada kesempatan ini kita akan menggunakan fungsi yang diawali dengan mysqli_ (dengan tambahan i)

Daftar Isi:

Daftar Isi

  1. Fungsi PHP Yang Dapat Digunakan Untuk Mengambil dan Menampilkan Data Tabel MySQL
  2. Buat Tabel Pada Database
  3. Menampilkan Data Tabel MySQL Dengan Fungsi mysqli_fetch_array()
  4. Menampilkan Data Tabel Database MySQL Dengan Fungsi mysqli_fetch_assoc()
  5. Menampilkan Data Tabel MySQL Dengan Fungsi mysqli_fetch_row()
  6. Membuat dan Menampilkan Data Temporary Field
  7. Apakah Perlu Menjalankan Fungsi mysqli_free_result() dan mysqli_close()?

Download file yang digunakan pada tutorial ini:

I. Fungsi Yang Dapat Digunakan Untuk Mengambil dan Menampilkan Data Tabel MySQL

Fungsi yang digunakan untuk menjalankan semua query MySQL adalah mysqli_query(), karena kita akan mengambil data, maka perintah SQL yang kita gunakan adalah SELECT, sehingga fungsinya menjadi mysqli_query('SELECT...')

Nah, untuk dapat menampilkan data hasil query, kita perlu mengakses data tersebut, untuk mengakses nya kita dapat menggunakan fungsi yang berawalan mysqli_fetch_ (fetch = mengambil). Adapun fungsi yang tersedia adalah:

  • mysqli_fetch_array()

    Secara default, fungsi ini akan menghasilkan associative array dan indexed array, untuk memilih salah satu saja, kita harus memberikan parameter tambahan yaitu FETCH_ASSOC untuk hasil associative array dan FETCH_ROW untuk hasil indexed array, kita bahas nanti.

  • mysqli_fetch_assoc()

    Fungsi ini akan menghasilkan associative array dengan key berupa nama field dari tabel.

  • mysqli_fetch_row()

    Fungsi ini akan menghasilkan indexed array dengan key berupa angka yang berurutan (0, 1, 2, 3, 4, 5, dst…).

Perbedaan ketiga fungsi ini dapat digambarkan sebagai berikut:

Cara menggunakan apa itu mysqli_fetch_row?

Untuk lebih memahami lebih jauh tentang array, sobat dapat mempelajarinya pada artikel ini: Memahami Array Pada PHP

Dari ketiga fungsi tersebut, terlihat bahwa yang paling efisien adalah menggunakan mysqli_fetch_assoc(), karena hanya menghasilkan satu jenis array, namun kita bebas menggunakan ketiganya karena perbedaan waktu eksekusi yang tidak signifikan.

Perulangan (loop) yang digunakan

Semua fungsi diatas, kecuali mysqli_fetch_all() setiap kali dijalankan akan menghasilkan satu baris row mulai dari row ke-1 (pemanggilan pertama),  ke-2 (pemanggilan ke 2), dan seterusnya hingga selesai, jadi kita tidak tahu berapa kali kita akan mengulang fungsi tersebut.

Karena sifatnya yang demikian MAKA kita menggunakan perulangan while, lebih jauh tentang perulangan while, dapat dibaca pada artikel: Memahami While dan Do While Pada PHP Dengan Contoh Kasus

II. Buat Tabel Pada Database

Untuk dapat mencoba script yang akan kita praktekkan nanti, saya akan menggunakan contoh data penjualan yang disimpan pada tabel sales dan database tutorial

Adapun bentuk tabel dan datanya adalah sebagai berikut:

id_transaksiid_produktgl_transaksihargaid_pelanggan
1 100 2016-09-20 265000 1
2 100 2016-10-11 270000 2
3 101 2016-08-17 250000 2
4 102 2016-02-08 255000 1
5 100 2016-06-05 290000 3

Untuk membuatnya, buat file insert_data.php kemudian copy-paste script berikut (pastikan belum ada tabel sales di database):

<?php
$db_host = 'localhost'; // Nama Server
$db_user = 'root'; // User Server
$db_pass = ''; // Password Server
$db_name = 'tutorial'; // Nama Database

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
	die ('Gagal terhubung MySQL: ' . mysqli_connect_error());	
}

$table_name = 'sales';

$sql = 'CREATE TABLE IF NOT EXISTS `' . $table_name . '` (
		  `id_transaksi` int(11) NOT NULL AUTO_INCREMENT,
		  `id_produk` int(11) NOT NULL,
		  `tgl_transaksi` date NOT NULL,
		  `kuantitas` tinyint(4) NOT NULL,
		  `harga` int(11) NOT NULL,
		  `id_pelanggan` int(11) NOT NULL,
		  PRIMARY KEY (`id_transaksi`),
		  KEY `id_produk` (`id_produk`)
		) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1';
		
$query = mysqli_query($conn, $sql);

if (!$query) {
	die ('ERROR: Tabel ' . $table_name . ' gagal dibuat: ' . mysqli_error($conn));
}

echo 'Tabel ' . $table_name . ' berhasil dibuat <br/>';

$sql = "INSERT INTO `$table_name` (`id_transaksi`, `id_produk`, `tgl_transaksi`, `kuantitas`, `harga`, `id_pelanggan`) 
		VALUES (1, 100, '2016-09-20', 8, 265000, 1),
				(2, 100, '2016-10-11', 3, 270000, 2),
				(3, 101, '2016-08-17', 8, 250000, 2),
				(4, 101, '2016-08-24', 12, 380000, 2),
				(5, 101, '2016-05-10', 12, 250000, 1),
				(6, 101, '2016-05-04', 11, 375000, 1),
				(7, 101, '2016-07-15', 3, 265000, 1),
				(8, 100, '2016-05-19', 4, 250000, 1),
				(9, 101, '2016-06-17', 12, 255000, 2),
				(10, 100, '2016-09-11', 12, 280000, 1)";
		
$query = mysqli_query($conn, $sql);

if (!$query) {
	die ('ERROR: Data gagal dimasukkan pada tabel ' . $table_name . ': ' . mysqli_error($conn));
}

echo 'Data berhasil dimasukkan pada tabel ' . $table_name . '';

Selanjutnya jalankan file tersebut, jika berhasil, maka akan muncul pesan seperti ini:

Cara menggunakan apa itu mysqli_fetch_row?

III. Menampilkan Data Tabel MySQL Dengan Fungsi mysqli_fetch_array()

Fungsi yang pertama yang akan kita gunakan adalah fungsi mysqli_fetch_array(), fungsi ini mungkin yang paling populer digunakan karena mungkin namanya yang familiar – mengandung kata array.

Contoh kode:

<?php
$db_host = 'localhost'; // Nama Server
$db_user = 'root'; // User Server
$db_pass = ''; // Password Server
$db_name = 'tutorial'; // Nama Database

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
	die ('Gagal terhubung MySQL: ' . mysqli_connect_error());	
}

$sql = 'SELECT id_produk, tgl_transaksi, harga, kuantitas 
		FROM sales';
		
$query = mysqli_query($conn, $sql);

if (!$query) {
	die ('SQL Error: ' . mysqli_error($conn));
}

echo '<table>
		<thead>
			<tr>
				<th>ID PRODUK</th>
				<th>TGL TRANSAKSI</th>
				<th>HARGA</th>
				<th>KUANTITAS</th>
			</tr>
		</thead>
		<tbody>';
		
while ($row = mysqli_fetch_array($query))
{
	echo '<tr>
			<td>'.$row['id_produk'].'</td>
			<td>'.$row['tgl_transaksi'].'</td>
			<td>'.number_format($row['harga'], 0, ',', '.').'</td>
			<td class="right">'.$row['kuantitas'].'</td>
		</tr>';
}
echo '
	</tbody>
</table>';

// Apakah kita perlu menjalankan fungsi mysqli_free_result() ini? baca bagian VII
mysqli_free_result($query);

// Apakah kita perlu menjalankan fungsi mysqli_close() ini? baca bagian VII
mysqli_close($conn);

Hasil yang kita peroleh adalah:

Cara menggunakan apa itu mysqli_fetch_row?

Penjelasan:

  • Pada baris 7 kita simpan koneksi ke database ke variabel $conn
  • Pada Baris 8 kita tes apakah koneksi gagal ( if (!$conn) ) jika gagal maka script akan berhenti dan memunculkan pesan kesalahan penyebab gagal nya koneksi, jika berhasil, script lanjut ke baris berikutnya.
  • Pada baris 15 kita simpan hasil query ke variabel $query
  • Baris 17 kita cek jika variabel $query isinya kosong maka kita hentikan script dan tampilkan pesan kesalahan. Pada tahap ini Anda bebas menentukan apakah script dihentikan atau dilanjutkan dengan hanya menampilkan pesan error saja
  • Pada baris 32, dengan while kita tambahkan tabel row (<tr><td>...</td></tr>) untuk setiap row yang dihasilkan, dengan memanggil nama field nya:
  • Cara menggunakan apa itu mysqli_fetch_row?

Seperti telah kita bahas sebelumnya bahwa kita menggunakan perulangan while untuk menjalankan mysqli_fetch_array() karena fungsi ini setiap dipanggil hanya menghasilkan 1 row yang berurutan.

Untuk membuktikannya, mari kita coba menjalankan mysqli_fetch_array() secara manual:

<?php
$sql = 'SELECT id_produk, tgl_transaksi, harga, kuantitas 
		FROM sales';
		
$query = mysqli_query($conn, $sql);

$row = mysqli_fetch_array($query);
echo 'Produk: ' . $row['id_produk'] . ' Tgl Transaksi: ' . $row['tgl_transaksi'] . ' Harga: ' . $row['harga'] . '</br/>';

$row = mysqli_fetch_array($query);
echo 'Produk: ' . $row['id_produk'] . ' Tgl Transaksi: ' . $row['tgl_transaksi'] . ' Harga: ' . $row['harga'] . '</br/>';

$row = mysqli_fetch_array($query);
echo 'Produk: ' . $row['id_produk'] . ' Tgl Transaksi: ' . $row['tgl_transaksi'] . ' Harga: ' . $row['harga'] . '</br/>';

Hasil yang kita peroleh:

Cara menggunakan apa itu mysqli_fetch_row?

IV. Menampilkan Data Tabel Database MySQL Dengan Fungsi mysqli_fetch_assoc()

Seperti telah disampaikan sebelumnya, fungsi ini sama dengan fungsi mysqli_fetch_array(), hanya saja, array yang dihasilkan hanya berbentuk associative array (array dengan key berupa nama field dari tabel/temporary field).

Melanjutkan contoh sebelumnya, untuk menggunakan fungsi ini, kita hanya perlu mengubah fungsi dari mysqli_fetch_array() menjadi mysqli_fetch_assoc() sebagai berikut:

<?php
$db_host = 'localhost'; // Nama Server
$db_user = 'root'; // User Server
$db_pass = ''; // Password Server
$db_name = 'tutorial'; // Nama Database

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
	die ('Gagal terhubung MySQL: ' . mysqli_connect_error());	
}

$sql = 'SELECT id_produk, tgl_transaksi, harga, kuantitas 
		FROM sales';
		
$query = mysqli_query($conn, $sql);

if (!$query) {
	die ('SQL Error: ' . mysqli_error($conn));
}

echo '<table>
		<thead>
			<tr>
				<th>ID PRODUK</th>
				<th>TGL TRANSAKSI</th>
				<th>HARGA</th>
				<th>KUANTITAS</th>
			</tr>
		</thead>
		<tbody>';
		
while ($row = mysqli_fetch_assoc($query))
{
	echo '<tr>
			<td>'.$row['id_produk'].'</td>
			<td>'.$row['tgl_transaksi'].'</td>
			<td>'.number_format($row['harga'], 0, ',', '.').'</td>
			<td class="right">'.$row['kuantitas'].'</td>
		</tr>';
}
echo '
	</tbody>
</table>';

// Apakah kita perlu menjalankan fungsi mysqli_free_result() ini? baca bagian VII
mysqli_free_result($query);

// Apakah kita perlu menjalankan fungsi mysqli_close() ini? baca bagian VII
mysqli_close($conn);

Output yang dihasilkan juga sama, yaitu:

Cara menggunakan apa itu mysqli_fetch_row?

Penjelasan:

Penjelasannya sama seperti sebelumnya, hanya saja pada baris ke 29 kita mengubah fungsi mysqli_fetch_array() menjadi mysqli_fetch_assoc()

V. Menampilkan Data Tabel MySQL Dengan Fungsi mysqli_fetch_row()

Fungsi ini juga sama dengan fungsi mysqli_fetch_array(), hanya saja bentuk array yang dihasilkan hanya indexed array (array dengan key 0, 1, 2, 3, dst…)

Contoh penggunaan query ini sama dengan contoh sebelumnya, hanya saja kita ubah fungsi mysqli_fetch_assoc() menjadi mysqli_fetch_row() dan kita akses field berdasarkan index, bukan nama field, sebagai berikut:

<?php
$db_host = 'localhost'; // Nama Server
$db_user = 'root'; // User Server
$db_pass = ''; // Password Server
$db_name = 'tutorial'; // Nama Database

$conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if (!$conn) {
	die ('Gagal terhubung MySQL: ' . mysqli_connect_error());	
}

$sql = 'SELECT id_produk, tgl_transaksi, harga, kuantitas 
		FROM sales';
		
$query = mysqli_query($conn, $sql);

if (!$query) {
	die ('SQL Error: ' . mysqli_error($conn));
}

echo '<table>
		<thead>
			<tr>
				<th>ID PRODUK</th>
				<th>TGL TRANSAKSI</th>
				<th>HARGA</th>
				<th>KUANTITAS</th>
			</tr>
		</thead>
		<tbody>';
		
while ($row = mysqli_fetch_row($query))
{
	echo '<tr>
			<td>'.$row[0].'</td>
			<td>'.$row[1].'</td>
			<td>'.number_format($row[2], 0, ',', '.').'</td>
			<td class="right">'.$row[3].'</td>
		</tr>';
}
echo '
	</tbody>
</table>';

// Apakah kita perlu menjalankan fungsi mysqli_free_result() ini? baca bagian VII
mysqli_free_result($query);

// Apakah kita perlu menjalankan fungsi mysqli_close() ini? baca bagian VII
mysqli_close($conn);

Hasil yang kita peroleh juga sama:

Cara menggunakan apa itu mysqli_fetch_row?

Penjelasan:

Penjelasan sama seperti pada fungsi mysqli_fetch_array(), bedanya, pada baris 29 kita menggunakan mysqli_fetch_row() dengan memanggil nama field berdasarkan index nya.

Urutan index diambil dari nama field yang digunakan pada query SELECT yang diurutkan dari yang paling kiri ke kanan:

Cara menggunakan apa itu mysqli_fetch_row?

VI. Membuat dan Menampilkan Data Temporary Field

Melanjutkan sebelumnya, untuk mempermudah memahami index ini, mari kita buat temporary field yang bernama total_byr, yang merupakan pengalian dari harga x kuantitas.

Query nya perlu kita ubah menjadi:

$sql = 'SELECT id_produk, tgl_transaksi, harga, kuantitas, harga*kuantitas AS total_byr 
		FROM sales';
		
$query = mysqli_query($conn, $sql);

if (!$query) {
	die ('SQL Error: ' . mysqli_error($conn));
}

echo '<table>
		<thead>
			<tr>
				<th>ID PRODUK</th>
				<th>TGL TRANSAKSI</th>
				<th>KUANTITAS</th>
				<th>HARGA</th>
				<th>TOTAL BYR</th>
			</tr>
		</thead>
		<tbody>';
		
while ($row = mysqli_fetch_array($query))
{
	echo '<tr>
			<td>'.$row['id_produk'].'</td>
			<td>'.$row['tgl_transaksi'].'</td>
			<td>'.$row['kuantitas'].'</td>
			<td>'.$row['harga'].'</td>
			<td>'.number_format($row['total_byr'], 0, ',', '.').'</td>
		</tr>';
}
echo '
	</tbody>
</table>';

Hasil yang kita peroleh adalah:

Cara menggunakan apa itu mysqli_fetch_row?

Penjelasan:

Kita dapat membuat temporary field dengan menambahkan AS, atau tanpa menggunakan AS (harga*kuantitas total_byr)

Saya lebih memilih menggunakan AS karena lebih mudah untuk mengidentifikasi bahwa fileld tersebut merupakan field baru hasil query (temporary field)

Field-field yang akan menjadi key dari array hasil query adalah seperti gambar berikut:

Cara menggunakan apa itu mysqli_fetch_row?

Jika menggunakan fungsi mysqli_fetch_row(), maka urutan index seperti gambar berikut:

Cara menggunakan apa itu mysqli_fetch_row?

VII. Apakah Perlu Menjalankan Fungsi mysqli_free_result() dan mysqli_close()?

Pada contoh diatas, ketika menampilkan data tabel MySQL,  kita selalu menggunakan mysqli_free_result() dan mysqli_close(), apa kegunaan kedua fungsi ini dan apakah kita perlu menjalankannya?

mysqli_free_result()

Setiap kali kita menjalankan perintah MySQL yang menghasilkan data (perintah SELECT) maka PHP akan menyimpan data tersebut pada memori komputer (RAM), hal ini sama ketika kita mendefinisikan variabel, dimana nilai dari variabel tersebut akan disimpan pada memory $variabel='Teks ini disimpan pada RAM'.

Nah, untuk menghapus data pada memory ini, pada variabel kita cukup memberikan nilai null atau sejenisnya ($variabel = ''),  sedangkan pada hasil query kita perlu menggunakan perintah mysqli_free_result().

Catatan: PHP tetap akan menjalankan perintah ini di setiap akhir eksekusi script PHP.

Apakah fungsi ini perlu dijalankan?

YA, jika query kita menghasilkan data yang sangat besar, dan di sisa script PHP kita masih banyak kode yang membutuhkan space memory atau kita tidak tahu apa yang terjadi di sisa script PHP yang ada (seperti pada pembuatan plugin)

TIDAK, jika query menghasilkan data yang kecil dan kita tahu bahwa sisa dari  script PHP kita hanya membutuhkan memory yang kecil.

mysqli_close()

Fungsi ini berfungsi untuk menutup koneksi MySQL, apakah ini perlu kita jalankan?

YA, jika kita ingin membiasakan sesuatu yang baik, karena di bahasa pemrograman lain koneksi ini akan terus terbuka jika kita tidak menutupnya secara manual.

TIDAK, jika kita ingin praktis, karena PHP akan selalu menutup koneksi ini di akhir eksekusi script PHP.

PHP merupakan bahasa inerpreter, yang artinya tidak berhubungan langsung dengan fisik komputer, padahal setiap bahasa pemrograman selalu berhubungan dengan fisik komputer, nah pada PHP, ada engine sendiri yang menterjemahkan bahasa PHP ke bahasa komputer yang sampai saat ini menggunakan Zend Engine.

Nah, Zend Engine ini yang akan otomatis menutup semua koneksi pada database pada setiap akhir eksekusi script PHP.

Download file yang digunakan pada tutorial ini:

VIII. Tambahan

Terdapat pertanyaan seperti ini: bagaimana jika kita ingin menskip beberapa data? misal yang ditampilkan hanya baris 2,3, dan 4, tidak keseluruhan data. Untuk keperluan seperti ini, kita bisa menggunakan statement continue untuk melewati loop dan break untuk menghentikan loop, sebagai berikut:

$num = 1;
while ($row = mysqli_fetch_assoc($query))
{
	if ($num < 2) {
		continue;
	} else if ($num == 5) {
		break;
	}
		
	echo '<tr>
		<td>'.$row['id_produk'].'</td>
		<td>'.$row['tgl_transaksi'].'</td>
		<td>'.number_format($row['harga'], 0, ',', '.').'</td>
		<td class="right">'.$row['kuantitas'].'</td>
	</tr>';
	$num++;
}</pre>

Demikian pembahasan mengenai cara menampilkan data tabel MySQL dengan PHP, semoga bermanfaat.

Artikel Terkait: Menampilkan Data MySQL Ke Dalam Tabel HTML

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Apa kegunaan dari fungsi Mysqli_fetch_row ()?

Fungsi mysql_fetch_row() digunakan untuk menampilkan tabel secara baris per baris. Fungsi mysql_fecth_row() akan mengembalikan nilai 1 baris dari sebuah tabel pada setiap pemanggilan.

Mysqli_fetch_array () untuk apa?

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.

Apa itu Mysqli_connect ()?

mysql_connect atau mysqli_connect adalah nama fungsi php untuk menjalankan argumen agar terkoneksi ke server mysql dan atau database.

Apa itu fungsi fetch?

fetch merupakan peristiwa pengambilan perintah dan data yang diperlukan. Fetch merupakan proses mengambil atau membawa instruksi dari memori utama ke CPU.