Menampilkan Data dari Database MySQL dengan PHP: Panduan Lengkap Versi MySQLi dan PDO

By | 12 October 2025

Setelah kamu berhasil membuat koneksi PHP ke database MySQL dengan MySQLi dan PDO, langkah berikutnya dalam pengembangan aplikasi web adalah menampilkan data dari database MySql dengan PHP ke halaman web.

Misalnya, kamu memiliki tabel produk dan ingin menampilkan daftar produk di halaman website toko online kamu. Nah, di artikel ini kamu akan belajar dua cara berbeda untuk menampilkan data:

  1. Menggunakan MySQLi

  2. Menggunakan PDO (PHP Data Objects)

Keduanya sama-sama populer dan sering digunakan dalam pengembangan web modern.

Struktur Database

Kita gunakan database toko_online dengan tabel produk seperti berikut:

Kolom Tipe Data Keterangan
id INT(11) PRIMARY KEY, AUTO_INCREMENT
nama_produk VARCHAR(100) Nama produk
harga INT(11) Harga produk
stok INT(11) Jumlah stok

1. Menampilkan Data Menggunakan MySQLi

a. Membuat File Koneksi

Buat file koneksi.php:

<?php
$host = "localhost";
$user = "root";
$pass = "";
$db   = "toko_online";

$conn = mysqli_connect($host, $user, $pass, $db);

if (!$conn) {
    die("Koneksi gagal: " . mysqli_connect_error());
}
?>

b. Menampilkan Data dari Database

Buat file baru read_mysqli.php:

<?php
include "koneksi.php";

$query = "SELECT * FROM produk ORDER BY id DESC";
$result = mysqli_query($conn, $query);
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Menampilkan Data Produk dengan MySQLi</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        table { border-collapse: collapse; width: 80%; margin: auto; }
        th, td { border: 1px solid #ccc; padding: 10px; text-align: center; }
        th { background-color: #f2f2f2; }
        h2 { text-align: center; }
    </style>
</head>
<body>
    <h2>Daftar Produk (Versi MySQLi)</h2>
    <table>
        <tr>
            <th>ID</th>
            <th>Nama Produk</th>
            <th>Harga</th>
            <th>Stok</th>
        </tr>
        <?php while($row = mysqli_fetch_assoc($result)) { ?>
        <tr>
            <td><?= $row['id']; ?></td>
            <td><?= htmlspecialchars($row['nama_produk']); ?></td>
            <td>Rp<?= number_format($row['harga']); ?></td>
            <td><?= $row['stok']; ?></td>
        </tr>
        <?php } ?>
    </table>
</body>
</html>

Penjelasan

  • mysqli_query() digunakan untuk menjalankan perintah SQL.

  • mysqli_fetch_assoc() untuk mengambil hasil dalam bentuk array asosiatif.

  • htmlspecialchars() mencegah serangan XSS saat menampilkan data.

Jika kamu buka di browser (http://localhost/belajarphp/read_mysqli.php), kamu akan melihat tabel berisi daftar produk dari database.

2. Menampilkan Data Menggunakan PDO

a. Membuat File Koneksi

Buat file koneksi_pdo.php:

<?php
$host = "localhost";
$db   = "toko_online";
$user = "root";
$pass = "";

try {
    $conn = new PDO("mysql:host=$host;dbname=$db;charset=utf8", $user, $pass);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    die("Koneksi gagal: " . $e->getMessage());
}
?>

b. Menampilkan Data dari Database

Buat file baru read_pdo.php:

<?php
include "koneksi_pdo.php";

try {
    $stmt = $conn->query("SELECT * FROM produk ORDER BY id DESC");
    $produk = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
    die("Terjadi kesalahan: " . $e->getMessage());
}
?>

<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Menampilkan Data Produk dengan PDO</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        table { border-collapse: collapse; width: 80%; margin: auto; }
        th, td { border: 1px solid #ccc; padding: 10px; text-align: center; }
        th { background-color: #f2f2f2; }
        h2 { text-align: center; }
    </style>
</head>
<body>
    <h2>Daftar Produk (Versi PDO)</h2>
    <table>
        <tr>
            <th>ID</th>
            <th>Nama Produk</th>
            <th>Harga</th>
            <th>Stok</th>
        </tr>
        <?php foreach ($produk as $row): ?>
        <tr>
            <td><?= $row['id']; ?></td>
            <td><?= htmlspecialchars($row['nama_produk']); ?></td>
            <td>Rp<?= number_format($row['harga']); ?></td>
            <td><?= $row['stok']; ?></td>
        </tr>
        <?php endforeach; ?>
    </table>
</body>
</html>

Penjelasan

  • $conn->query() → menjalankan query SQL langsung.

  • $stmt->fetchAll(PDO::FETCH_ASSOC) → mengambil semua hasil dalam bentuk array asosiatif.

  • foreach → digunakan untuk menampilkan semua data hasil query.

3. Perbandingan MySQLi vs PDO

Aspek MySQLi PDO
Kemudahan Mudah untuk pemula Sedikit lebih kompleks
Dukungan Database Hanya MySQL Banyak database (MySQL, PostgreSQL, SQLite, dll)
Prepared Statement
Error Handling Terbatas Lebih baik dengan try...catch
Fleksibilitas Rendah Tinggi

Tips SEO & Best Practice

  1. Gunakan struktur file rapi (misalnya folder includes untuk koneksi).

  2. Selalu lindungi output dengan htmlspecialchars() agar aman dari XSS.

  3. Gunakan number_format() untuk tampilan harga agar lebih rapi.

  4. Pastikan judul halaman (<title>) dan heading (<h2>) sesuai dengan topik (SEO-friendly).

  5. Tambahkan meta description di setiap halaman agar hasil pencarian lebih menarik.

Kesimpulan

Kamu kini sudah memahami dua cara menampilkan data dari database ke halaman web:

✅ Dengan MySQLi – lebih sederhana dan cocok untuk pemula.
✅ Dengan PDO – lebih aman dan fleksibel untuk proyek skala besar.

Keduanya bisa digunakan sesuai kebutuhan, tetapi jika kamu ingin membangun aplikasi profesional yang mudah dikembangkan, PDO lebih direkomendasikan.