0% menganggap dokumen ini bermanfaat (0 suara)
158 tayangan

PDO (PHP Data Objects)

PDO adalah interface PHP untuk berkomunikasi dengan berbagai jenis database. PDO memungkinkan kode PHP yang sama untuk digunakan pada berbagai database tanpa perubahan, dan mendukung berbagai jenis database seperti MySQL, PostgreSQL, SQLite. PDO bekerja melalui driver database yang menghubungkan PDO dengan server database.

Diunggah oleh

Fariz
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
158 tayangan

PDO (PHP Data Objects)

PDO adalah interface PHP untuk berkomunikasi dengan berbagai jenis database. PDO memungkinkan kode PHP yang sama untuk digunakan pada berbagai database tanpa perubahan, dan mendukung berbagai jenis database seperti MySQL, PostgreSQL, SQLite. PDO bekerja melalui driver database yang menghubungkan PDO dengan server database.

Diunggah oleh

Fariz
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 21

PDO (PHP Data Objects)

Pengertian PDO (PHP Data Objects)

PDO (PHP Data Objects) adalah interface universal yang disediakan PHP
untuk “berkomunikasi” dengan database server. Maksud istilah
“interface universal” disini adalah bahwa PDO tidak terikat dengan aplikasi
database tertentu. Apabila saat ini kita menggunakan database MySQL dan
dikemudian hari ingin bermigrasi menggunakan PostgreSQL, kita hanya
tinggal mengganti cara pemanggilan awal PDO dan seluruh kode program
yang ada bisa langsung digunakan untuk database baru.
Kondisi ini berbeda jika menggunakan mysql extension atau mysqli
extension. Kedua extension ini hanya bisa bekerja dengan database
MySQL. Karena alasan inilah banyak sebaiknya kita mulai beralih
menggunakan PDO dibandingkan mysqli.

Secara teknis, apabila menggunakan mysql atau mysqli extension, PHP


langsung berhubungan dengan MySQL Server, tetapi jika menggunakan
PDO, ia tidak berhubungan langsung dengan database, tetapi hanya
sebagai “interface”. Konsep PDO ini dapat digambarkan sebagai berikut:
PHP PDO –> Database Driver –> Database Server

PDO bekerja dengan metode yang disebut “data-access abstraction layer”.


Artinya, apapun jenis database server yang digunakan, kode PHP yang ditulis
akan tetap sama. PDO menyediakan “abstraction layer” untuk berkomunikasi
dengan database server.
Untuk menggunakan PDO, kita harus mengaksesnya
menggunakan object. PDO tidak menyediakan cara
penulisan procedural style seperti mysqli atau mysql extension.
Karena itu, jika anda kurang paham tentang istilah pemrograman
object seperti class, method, dan property,
Jenis Database Server yang didukung PDO
Hingga saat penulisan tutorial ini (PHP versi 5.6)
PDO mendukung setidaknya 12 jenis
Interface/Database Server:
• CUBRID
• MS SQL Server
• Firebird
• IBM
• Informix
• MySQL
• MS SQL Server
• Oracle
• ODBC and DB2
• PostgreSQL
• SQLite
• 4D
Dapat dilihat bahwa PDO mendukung banyak aplikasi database
populer seperti: Oracle, Microsoft SQL Server, dan PostgreSQL.
Dengan membuat kode PHP menggunakan PDO, secara tidak
langsung kita juga membuka kemungkinan untuk menggunakan
database server selain MySQL, sehingga menjadi lebih fleksibel.
Cara Mengaktifkan PDO Extension

Walaupun PDO Extension telah aktif secara “default” pada PHP versi 5.1 keatas, tetapi tidak
semua database driver bisa digunakan. Dengan kata lain, untuk alasan performa, PHP me-
nonaktifkan beberapa driver database seperti Oracle atau PostgreSQL di dalam PDO.
Untuk melihat driver database apa saja yang telah aktif dan bisa langsung digunakan, bisa
menggunakan fungsi (lebih tepatnya: static method) PDO::getAvailableDrivers():

<?php
print_r(PDO::getAvailableDrivers());
?>
Ketika saya menjalankan perintah tersebut pada PHP 5.6 bawaan XAMPP, berikut adalah hasil
yang didapat:

Array ( [0] => mysql [1] => sqlite )

Dari tampilan diatas, dapat dilihat bahwa driver PDO bawaan PHP yang aktif (dan yang bisa
digunakan) hanyalah MySQL dan SQLite. Jadi bagaimana cara mengaktifkan driver untuk
database lainnya? Caranya adalah mengubah setingan php.ini.
Silahkan buka file php.ini dengan aplikasi text editor, kemudian search kata “pdo”. Dalam versi PHP
yang saya gunakan, hasil pencarian “pdo” akan tampil pada baris ke-1010, seperti gambar dibawah:
Pada baris inilah kita mengaktifkan driver database PDO. Perhatikan library yang diawali dengan “php_pdo“,
inilah driver-driver database PDO yang tersedia di dalam PHP. Dapat dilihat driver yang telah aktif
hanya php_pdo_mysql.dll dan php_pdo_sqlite.dll.
Untuk mengaktifkannya, silahkan hapus tanda titik koma (;) dari awal baris nama driver yang ingin
digunakan. Sebagai contoh, saya akan mengaktifkan extension=php_pdo_pgsql.dll yang merupakan
driver dari database PostgreSQL:
Selanjutnya, save file php.ini, kemudian restart web server Apache (matikan dan hidupkan kembali
melalui XAMPP Control Panel).
Untuk memastikan apakah driver telah aktif atau belum, kita kembali menjalankan
method PDO::getAvailableDrivers(), dan berikut adalah hasil yang didapat:

Array ( [0] => mysql [1] => pgsql [2] => sqlite )

Seperti yang terlihat, driver PostgreSQL untuk PDO telah aktif dan bisa langung digunakan.
Cara Membuat Koneksi PHP MySQL dengan PDO
Membuat koneksi PHP MySQL dengan PDO constructor

Karena PDO adalah fungsi/fitur PHP yang ditulis menggunakan objek, maka untuk membuat koneksi
antara PHP dengan MySQL, kita menggunakan PDO constructor, yakni dengan membuat objek baru
dari class PDO (menggunakan keyword: new).

Berikut adalah struktur dasar cara penulisan PDO constructor untuk database MySQL:

$dbh = new PDO('mysql:host=lokasi_db;dbname=nama_database',


"nama_user", "password_user");
Variabel $dbh adalah variabel yang akan menjadi object PDO. Object ini biasa disebut
sebagai “Database Handler”. Object inilah yang nantinya akan kita gunakan untuk
menjalankan perintah-perintah PDO. Nama variabel boleh bebas, dan tidak harus $dbh.

Argumen dari constructor PDO terdiri dari 3 bagian, bagian pertama berisi nama
database server (misalnya:mysql) kemudian diikuti dengan alamat server dan nama
database, semuanya di dalam 1 string. Untuk argumen kedua diisi dengan nama user,
dan argumen ketiga berisi password user.
Sebagai contoh, untuk masuk ke dalam MySQL server di komputer localhost, dengan
user root, password: 12345, nama database: universitas, kode PDO yang digunakan
adalah sebagai berikut:

<?php
$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "12345");
?>
Setelah membuat koneksi PDO, untuk menghapus koneksi kita tinggal memberikan
nilai “null” kepada variabel “Database Handler” sebagai berikut:

<?php
$dbh = null;
?>

Sama seperti mysqli, proses penutupan koneksi ini bersifat opsional, dan PHP
secara otomatis akan menghapus koneksi pada saat halaman PHP selesai
dijalankan.
Cara Menampilkan Pesan Kesalahan (error) pada PDO

Karena PDO menggunakan object, penanganan kesalahan akan lebih baik jika menggunakan
blok TRY…CATCH, atau dikenal dengan “exceptions”.

Untuk menampilkan pesan kesalahan dengan exceptions pada PDO, terdapat 3 pilihan metode.
Ketiga metode ini menggunakan method PDO::setAttribute(PDO::ATTR_ERRMODE):

•$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );


•$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
•$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
PDO::ERRMODE_SILENT adalah pilihan default. Jika kita tidak mengubah setingan
error, pilihan inilah yang digunakan. Untuk mengecek error, kita bisa menggunakan
method PDO::errorCode() dan PDO::errorInfo().

PDO::ERRMODE_WARNING digunakan untuk menampilkan error berupa warning PHP,


kemudian PHP akan melanjutkan proses eksekusi program. Pilihan ini cocok untuk
proses debugging.

PDO::ERRMODE_EXCEPTION digunakan untuk menampilkan error dengan exceptions.


Pilihan inilah yang sering digunakan untuk menampilkan error dengan TRY…CATCH.
Dengan menggunakan penanganan kesalahan (exceptions), berikut adalah
modifikasi kode PHP untuk koneksi PDO dengan MySQL:
<?php
try {
// buat koneksi dengan database
$dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");

// set error mode


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

// hapus koneksi
$dbh = null;
}
catch (PDOException $e) {
// tampilkan pesan kesalahan jika koneksi gagal
print "Koneksi atau query bermasalah: " . $e->getMessage() . "<br/>";
die();
}
?>
Sebagai contoh, jika saya mengganti nama user menjadi “user_tetangga” yang memang
tidak ada di dalam database, berikut tampilan error yang terjadi:

Koneksi atau query bermasalah: SQLSTATE[HY000]


[1044]
Access denied for user ''@'localhost' to database
'universitas'

Didalam block TRY…CATCH inilah nantinya kita akan menjalankan query-query MySQL seperti
menampilkan data, maupun menginput data baru ke dalam tabel MySQL.

Anda mungkin juga menyukai