Fungsi mysqli_fetch_assoc() di PHP: Cara Mengambil Data dari MySQL

Saat pertama kali belajar PHP, salah satu hal yang paling sering dipakai adalah menampilkan data dari database MySQL ke halaman web. Fungsinya adalah mysqli_fetch_assoc() — dia yang mengubah hasil query menjadi baris yang bisa kita baca sebagai array.
Tanpa fungsi ini, data di database tidak akan pernah sampai ke layar.
Artikel ini menjelaskan apa itu mysqli_fetch_assoc(), bagaimana cara menggunakannya, dan contoh langsung yang bisa kamu jalankan. Saya menuliskannya dengan pola yang sama seperti yang saya pakai waktu belajar dulu: baca satu baris, tampilkan, ulangi sampai habis.
Pengertian mysqli_fetch_assoc()
mysqli_fetch_assoc() adalah fungsi PHP yang digunakan untuk mengambil satu baris data dari database MySQL sebagai array asosiatif. Fungsi ini mengembalikan array asosiatif yang berisi nama kolom dan nilai dari setiap kolom dalam baris yang dipilih.
Cara Menggunakan mysqli_fetch_assoc():
mysqli_fetch_assoc() harus digunakan setelah melakukan koneksi ke database dan menjalankan query SELECT. Berikut adalah langkah-langkah untuk menggunakan mysqli_fetch_assoc():
- Buat koneksi ke database MySQL menggunakan fungsi mysqli_connect().
- Jalankan query SELECT menggunakan fungsi mysqli_query().
- Looping hasil query menggunakan fungsi mysqli_fetch_assoc().
- Gunakan hasil mysqli_fetch_assoc() untuk menampilkan data.
Berikut adalah contoh penggunaan mysqli_fetch_assoc():
<?php
// Buat koneksi ke database MySQL
$conn = mysqli_connect("localhost", "username", "password", "dbname");
// Jalankan query SELECT
$result = mysqli_query($conn, "SELECT * FROM users");
// Looping hasil query
while ($row = mysqli_fetch_assoc($result)) {
echo "Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
Dalam contoh di atas, kita membuat koneksi ke database MySQL dan menjalankan query SELECT untuk mengambil data dari tabel users. Kemudian kita menggunakan looping while dan fungsi mysqli_fetch_assoc() untuk menampilkan data.
Beberapa contoh penggunaan mysqli_fetch_assoc():
Mengambil satu baris data dari database MySQL.
<?php
$query = "SELECT * FROM users WHERE id = 1";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_assoc($result);
Mengambil semua data dari database MySQL.
<?php
$query = "SELECT * FROM users";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
echo $row["name"] . "<br>";
}
Mengambil data dari beberapa tabel dengan JOIN.
<?php
$query = "SELECT users.name, orders.order_date FROM users INNER JOIN orders ON users.id = orders.user_id";
$result = mysqli_query($conn, $query);
while ($row = mysqli_fetch_assoc($result)) {
echo $row["name"] . " - " . $row["order_date"] . "<br>";
}
FAQ — Pertanyaan Umum
Apa perbedaan antara mysqli_fetch_assoc() dan mysqli_fetch_array()?
mysqli_fetch_assoc() mengembalikan array asosiatif yang berisi nama kolom dan nilai dari setiap kolom dalam baris yang dipilih, sedangkan mysqli_fetch_array() mengembalikan array numerik dan asosiatif yang berisi nama kolom dan nilai dari setiap kolom dalam baris yang dipilih.
Apa yang terjadi jika tidak menggunakan mysqli_fetch_assoc() dalam query SELECT?
Tanpa mysqli_fetch_assoc(), query SELECT hanya mengembalikan objek hasil mysqli_query(). Objek itu sendiri tidak bisa langsung ditampilkan — kamu tetap perlu fetch untuk mengambil barisnya.
Apa yang harus dilakukan jika mysqli_fetch_assoc() mengembalikan nilai NULL?
NULL dari mysqli_fetch_assoc() menandakan tidak ada lagi baris yang tersisa (loop selesai). Setelah itu tinggal menutup koneksi dengan mysqli_close().
Praktik Terbaik
Beberapa tips saat menulis kode PHP:
- Gunakan prepared statement — Hindari SQL injection dengan menggunakan PDO atau MySQLi prepared statement, jangan concatenate query secara langsung.
- Validasi input — Selalu validasi dan sanitasi data dari user menggunakan
filter_var(),htmlspecialchars(), atau library validasi. - Error reporting — Saat development, aktifkan
error_reporting(E_ALL)dandisplay_errorsuntuk memudahkan debugging. - Gunakan autoloading — Manfaatkan Composer autoload atau PSR-4 untuk mengelola file class secara otomatis.
- Pisahkan logic dan view — Gunakan pola MVC atau minimal pisahkan kode PHP dan HTML agar lebih rapi dan mudah dipelihara.
Dua tips pertama (prepared statement dan validasi input) adalah kebiasaan yang paling sering saya tekankan ke teman yang baru mulai, karena keduanya mencegah masalah yang paling umum: SQL injection. Siapapun yang menyusun query dengan menggabungkan string dari input user langsung rentan — dan solusinya sederhana, pakai prepared statement sejak awal.
- Belajar PHP: Fungsi Isset dan empty pada PHP
- Cara Membuat Form Input Dinamis dengan PHP dan JavaScript
- Slice Array pada PHP: Memanipulasi Data dengan Efisien
Kesimpulan:
mysqli_fetch_assoc() adalah fungsi yang paling sering kamu pakai untuk menampilkan data MySQL di halaman PHP. Konsepnya sederhana: dia membaca satu baris, kamu tampilkan, lalu ulangi sampai NULL menandakan semua baris sudah habis.
Mulai dari contoh while-loop di atas, lalu tambahkan prepared statement begitu query mulai menyentuh input dari user. Itu urutan yang saya bilang paling nyaman untuk dipelajari dulu, dan paling jarang bikin masalah di project sungguhan.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara mysqli_fetch_assoc() dan mysqli_fetch_array()?
mysqli_fetch_assoc() mengembalikan array asosiatif yang berisi nama kolom dan nilai dari setiap kolom dalam baris yang dipilih, sedangkan mysqli_fetch_array() mengembalikan array numerik dan asosiatif yang berisi nama kolom dan nilai dari setiap kolom dalam baris yang dipilih.
Apa yang terjadi jika tidak menggunakan mysqli_fetch_assoc() dalam query SELECT?
Jika tidak menggunakan mysqli_fetch_assoc(), query SELECT hanya akan mengembalikan objek hasil mysqli_query(). Objek ini tidak bisa digunakan untuk menampilkan data.
Apa yang harus dilakukan jika mysqli_fetch_assoc() mengembalikan nilai NULL?
Jika mysqli_fetch_assoc() mengembalikan nilai NULL, itu berarti tidak ada lagi baris data yang tersedia untuk diambil. anda harus keluar dari looping while dan menutup koneksi ke database menggunakan fungsi mysqli_close().

