Modul 2

Koneksi Database PDO

Kategori: phpRilis: Maret 12, 2026Waktu Baca: 12 Menit
Koneksi Database PDO
Backend Engineering / PHP Database

Modul 2: Koneksi Database PDO

Database Server Concept

Modul 02

"Komunikasi Aman dan Efisien dengan MySQL"

Diperbarui Terakhir
45 Menit Eksekusi

Mengapa kita menggunakan PDO (PHP Data Objects) dan bukan mysqli? PDO mendukung banyak jenis database (MySQL, PostgreSQL, SQLite, dll) hanya dengan sintaks yang sama, dan yang paling penting: PDO murni berbasis Object-Oriented (OOP).

Interaksi Database

Implementasi PDO di PHP

01 Membuat Koneksi (Instansiasi)

Kita menggunakan blok try...catch untuk menangkap *Exception* (error) jika koneksi gagal. DSN (Data Source Name) menyimpan informasi host dan nama database.

<?php
$host = '127.0.0.1';
$db   = 'catatan_kader';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

// Data Source Name (DSN)
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";

try {
    // Membuat Object PDO
    $pdo = new PDO($dsn, $user, $pass);
    
    // Set Error Mode ke Exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Koneksi berhasil!";
} catch (\PDOException $e) {
    // Jika error, lemparkan pesan gagal
    throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

02 Prepared Statements (Anti SQL Injection)

Jangan pernah memasukkan variabel langsung ke dalam string query SQL. Gunakan metode prepare() dan execute() untuk membersihkan input data dari user.

<?php
// Data dari input form user
$id_user = $_GET['id'];

// ❌ CARA SALAH (Rentan SQL Injection)
// $stmt = $pdo->query("SELECT * FROM users WHERE id = $id_user");

// ✅ CARA BENAR (Prepared Statement)
$sql = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);

// Eksekusi dengan mengikat parameter
$stmt->execute(['id' => $id_user]);

03 Fetching Data (Mengambil Hasil)

Setelah query dieksekusi, kita harus menarik datanya. Anda bisa menggunakan fetch() untuk 1 baris, atau fetchAll() untuk banyak baris. Parameter PDO::FETCH_OBJ akan mengembalikan data sebagai Object PHP.

<?php
// Mengambil semua baris data user
$stmt = $pdo->query("SELECT nama, email FROM users");

// Ambil sebagai Array dari Object
$users = $stmt->fetchAll(PDO::FETCH_OBJ);

foreach ($users as $user) {
    // Karena Object, kita panggil menggunakan -> (bukan index array)
    echo $user->nama . " | " . $user->email . "<br>";
}
Kader Note (Keamanan Database):

Konsep Prepared Statements sangat krusial. Framework modern seperti Laravel menggunakan Query Builder dan Eloquent ORM yang secara otomatis membungkus interaksi database Anda dengan PDO Prepared Statements di balik layar. Dengan memahami ini, Anda tahu *kenapa* Laravel aman.

MODUL SEBELUMNYAPondasi OOP PHP
SELANJUTNYA TERKUNCIKeamanan & SQL Injection