Kenalan Yuk! Apa Itu PHP Data Object dan Cara Kerjanya

Kenalan Yuk! Apa Itu PHP Data Object dan Cara Kerjanya

Waktu membaca menit

Kategori Hosting

Update Terakhir 8 Jul 2025

Kamu sedang belajar PHP dan mulai masuk ke tahap koneksi database PHP? Nah, kamu pasti akan menemukan satu istilah penting: PHP Data Object (PDO). Artikel ini akan membantu kamu mengenal apa itu PHP Data Object, bagaimana cara kerjanya, dan kenapa penting untuk pengembangan web modern.

Apa Itu PHP Data Object?

PHP Data Object atau PDO adalah sebuah PHP Extension yang menyediakan cara standar dan fleksibel untuk mengakses berbagai jenis database. 

Dengan PDO, kamu bisa menggunakan fungsi yang sama meskipun database yang kamu gunakan berbeda-beda—entah itu MySQL, PostgreSQL, atau SQLite.

Namun, penting untuk kamu tahu: PDO itu bukan database, dan juga bukan abstraction layer yang mengubah query SQL-mu. Ini hanya berfungsi menyediakan antarmuka yang konsisten agar kamu tidak perlu repot menyesuaikan kode tiap kali pindah database. 

Untuk bisa terkoneksi, kamu tetap perlu mengaktifkan driver database-nya. Contohnya, kamu bisa aktifkan driver MySQL dengan menambahkan ini di file php.ini:

extension=pdo_mysql

Baca Juga: Cara Membuat Koneksi Database PHP ke MySQL

Fitur Utama PHP Data Object

Apa Itu PHP Data Object dna manfaatnya untuk koneksi database

PDO punya beberapa fitur penting yang bukan cuma bikin coding jadi lebih rapi, tapi juga lebih aman dan fleksibel. Memahami fitur-fitur DPO sekaligus juga bisa membuatmu memahami bagaimana cara kerjanya

Prepared Statement: Anti-SQL Injection

Kalau kamu sering dengar tentang serangan SQL Injection, PDO punya solusi canggih: parameterized queries.

Alih-alih menempelkan input pengguna langsung ke dalam query SQL, PDO mengirimkan input sebagai parameter. Contoh:

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$userEmail]);

Manfaatnya:

  • Data pengguna dianggap sebagai data, bukan instruksi SQL.
  • Mencegah celah keamanan dari input berbahaya.
  • Lebih mudah digunakan untuk input dinamis dan form.

Baca Juga: MySQL vs MySQLi: Adakah Perbedaan Diantara Keduanya

Beragam Tipe Return Data

PDO sangat fleksibel dalam hal bagaimana kamu ingin menerima data dari database. Berikut beberapa opsi return:

  • PDO::FETCH_ASSOC: array asosiatif
  • PDO::FETCH_OBJ: objek
  • PDO::FETCH_BOTH: kombinasi (default)
  • PDO::FETCH_CLASS: langsung jadi objek dari kelas tertentu

Contoh:

$stmt = $pdo->query("SELECT * FROM products");
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

Kamu bisa pilih mana yang paling nyaman untuk gaya coding kamu.

Error Handling yang Lebih Terkontrol

PDO mendukung tiga mode penanganan error:

  • PDO::ERRMODE_SILENT → Error disembunyikan (default)
  • PDO::ERRMODE_WARNING → Muncul sebagai peringatan
  • PDO::ERRMODE_EXCEPTION → Melempar exception (rekomendasi terbaik)

Contoh:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Mode exception sangat cocok untuk debugging dan logging di aplikasi yang kompleks.

Transaction Handling: Aman & Konsisten

Kalau kamu sedang membuat aplikasi seperti toko online atau sistem booking, fitur transaksi sangat krusial. Kamu bisa mengatur agar satu set query dijalankan sekaligus, dan dibatalkan jika salah satunya gagal:

$pdo->beginTransaction();
try {
    $pdo->exec("INSERT INTO orders ...");
    $pdo->exec("UPDATE stock ...");
    $pdo->commit();
} catch (Exception $e) {
    $pdo->rollBack();
}

Apa manfaatnya? Integritas data tetap terjaga.

Perbedaan PDO vs MySQLi

Kamu mungkin bertanya-tanya, kenapa harus repot-repot pakai PDO kalau MySQLi juga bisa? Nah, ini dia beberapa perbandingannya supaya kamu bisa memilih dengan lebih bijak:

  • Dukungan Database
    PDO bisa digunakan untuk berbagai jenis database seperti MySQL, PostgreSQL, SQLite, dan lainnya. Ini cocok kalau kamu ingin aplikasimu fleksibel. Sementara itu, MySQLi hanya mendukung MySQL/MariaDB.
  • Prepared Statement
    Keduanya mendukung prepared statement, jadi aman dari SQL Injection. Tapi di PDO, sintaksnya lebih ringkas dan konsisten.
  • Transaksi Database
    Kalau kamu butuh eksekusi query yang saling bergantung, keduanya mendukung transaksi. Tapi implementasi di PDO terasa lebih natural.
  • Pemrograman Berbasis Objek (OOP)
    PDO sepenuhnya berbasis OOP, memudahkan untuk pengelolaan skala besar. MySQLi masih mencampur OOP dan prosedural.
  • Fleksibilitas
    Dengan pendekatan yang lebih seragam dan dukungan banyak DBMS, PDO jelas lebih fleksibel dibanding MySQLi.

Berikut ini tabel perbandingan PHP Data Object dan MySQLi:

AspekPDOMySQLi
Dukungan DBMulti-databaseHanya MySQL/MariaDB
Prepared StatementYaYa
TransactionYaYa
OOP SupportFull OOPOOP + Prosedural
FlexibilitasLebih fleksibelKurang fleksibel

Database yang Didukung PDO

PDO mendukung banyak sekali jenis database, di antaranya: mulai dari yang populer seperti MySQL dan PostgreSQL, sampai yang mungkin belum sering kamu dengar seperti Firebird atau Cubrid.

  • MySQL
  • PostgreSQL
  • SQLite
  • Oracle
  • MS SQL Server
  • IBM
  • Firebird
  • Informix
  • Sybase
  • 4D
  • Cubrid
  • FreeTDS

Karena PDO sudah tersedia secara bawaan di PHP, untuk bisa terhubung ke database tersebut, kamu tinggal mengaktifkan driver tambahan yang sesuai dengan jenis database yang ingin kamu gunakan. 

Cara Menggunakan PDO di PHP

Setelah memahami konsep dan manfaat PDO, sekarang saatnya masuk ke bagian praktik — bagian yang paling ditunggu-tunggu, di mana kamu bisa mulai mencoba langsung di proyek PHP-mu.

#1. Aktifkan PDO Driver

Langkah pertama, kamu perlu mengaktifkan ekstensi driver database dengan langkah-langkah berikut, sesuai dengan sistem operasi yang kamu gunakan.:

  • Di Linux (Ubuntu)

Jalankan perintah berikut di terminal, tergantung dari database yang kamu pakai:

sudo apt install php-mysql       # untuk MySQL
sudo apt install php-pgsql       # untuk PostgreSQL
sudo apt install php-sqlite3     # untuk SQLite
  • Di Windows:

Buka file php.ini, lalu cari baris seperti berikut dan hapus tanda ; di depannya:

extension=pdo_mysql

Selanjutnya, restart server (XAMPP, Laragon, atau WAMP) agar perubahan diterapkan. 

Langkah ini penting karena tanpa driver yang aktif, koneksi ke database lewat PDO tidak akan berhasil. 

#2. Membuat Koneksi Database

Setelah driver aktif, kamu bisa mulai membuat koneksi ke database. Contoh berikut menunjukkan cara koneksi ke tiga jenis database berbeda:

  • Koneksi ke MySQL:
$conn = new PDO("mysql:host=localhost;dbname=testdb", "root", "password");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Kode ini membuka koneksi ke database testdb di server lokal. Penggunaan setAttribute di sini berguna untuk menangani error dengan cara yang lebih terstruktur (mode exception).

  • Koneksi ke PostgreSQL:
$conn = new PDO("pgsql:host=localhost;dbname=testdb", "user", "pass");

Format koneksi hampir sama, hanya berbeda pada jenis driver (pgsql) dan kredensial login.

  • Koneksi ke SQLite:
$conn = new PDO("sqlite:database/test.db");

SQLite menggunakan file lokal sebagai databasenya. Cocok buat kamu yang baru belajar dan ingin mencoba tanpa perlu setup server database.

#3. CRUD dengan PDO

Setelah koneksi berhasil, kamu bisa mulai menjalankan operasi CRUD (Create, Read, Update, Delete). Berikut ini contohnya:

  • Insert Satu Data
$sql = "INSERT INTO person(name, age) VALUES(:name, :age)";
$stmt = $conn->prepare($sql);
$stmt->execute([':name' => 'Zero', ':age' => 23]);

Kode ini menyisipkan satu data ke tabel person dengan nilai name dan age yang di-bind secara aman melalui prepared statement. Ini cara terbaik untuk mencegah SQL Injection.

  • Update Data
$sql = "UPDATE person SET age = :age WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->bindParam(':age', $age);
$stmt->execute();

Di sini kamu memperbarui data berdasarkan id. bindParam() digunakan jika kamu ingin mengikat variabel agar nilainya bisa berubah sebelum eksekusi.

  • Hapus Data
$sql = "DELETE FROM person WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();

Dengan query ini, kamu bisa menghapus data berdasarkan id. Sangat berguna untuk membuat fitur delete pada dashboard admin.

  • Ambil Semua Data
$sql = "SELECT * FROM person";
$stmt = $conn->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

Query ini mengambil semua baris dari tabel person dan mengembalikannya dalam format array asosiatif. Sangat cocok untuk ditampilkan ke tabel HTML atau digunakan dalam API.

Manfaat Menggunakan PDO

Apa Itu PHP Data Object

Mengapa semakin banyak developer beralih ke PDO? Berikut beberapa manfaat utamanya:

  • Usability (Kemudahan Penggunaan)
    PDO menyediakan banyak fungsi bantu yang mempercepat pekerjaan sehari-hari, seperti query builder yang rapi dan pemrosesan data hasil query yang fleksibel.
  • Reusability (Kode yang Lebih Fleksibel)
    Kamu bisa pakai satu set kode yang sama untuk berbagai jenis database, cukup ganti drivernya saja—tanpa perlu ubah logika dasarnya.
  • Security (Keamanan Lebih Terjamin)
    PDO mendukung prepared statement, yang secara otomatis mencegah SQL Injection. Ini sangat penting, terutama kalau aplikasi kamu menerima input dari pengguna.
  • Error Handling (Penanganan Error Lebih Rapi)
    Mode exception di PDO memudahkan kamu dalam melacak dan menangani error dengan cara yang lebih profesional.
  • Multi-Database Support
    Mau pindah dari MySQL ke PostgreSQL? Dengan PDO, kamu tidak perlu menulis ulang seluruh kode—cukup ganti string koneksi dan driver-nya saja.

Kesimpulan

Sekarang kamu sudah tahu apa itu PHP Data Object, keunggulannya dibanding MySQLi, serta bagaimana cara menggunakannya untuk koneksi database PHP. Dengan PDO, proses pengembangan web jadi lebih aman, fleksibel, dan profesional.

Kalau kamu masih dalam tahap belajar PHP dan butuh tempat hosting yang ringan, cepat, dan murah, IDwebhost siap jadi partner terbaikmu. Dengan layanan Hosting Murah yang terjangkau, kamu sudah bisa punya hosting sendiri untuk belajar langsung sambil praktik. Yuk, wujudkan proyek PHP pertamamu sekarang!