Assalamualaikum wr. Wb.
pada tutorial kali ini saya akan membahas tentang koneksi Database dengan PDO (PHP Data Objek).
apa itu PDO ? PDO secara sederhana adalah cara baru koneksi php dengan database, kalau dulu kita memakai mysql_connect dan kroni-kroninya, maka sekarang kita harus cepat-cepat move-on. Kenapa harus move-on ? udah susah-susah belajar, mulai dari kenalan, PDKT, trus jadian, dan sekarang disuruh move-on, ng enak banget kan, mana sering dipake lagi :D #eaa malah curhat :D, alasan kenapa kita harus move-on adalah karna mysql_connect dan kroni-kroninya sudah dinyatakan deprecated. Apa sih deprecated ? Menurut Google Translate, Deprecated artinya usang atau Jadul alias Kuno, secara sederhananya Deprecated adalah notifikasi dimana ada pembaharuan untuk fungsi fungsi tertentu (dalam hal ini mysql), jadi fungsi mysql untuk koneksi database diperbaharui karna alasan tertentu, biasanya dari segi performa, sekuriti dan lainnya. untuk penjelasan lebih lanjut baca : http://php.net/manual/en/migration55.deprecated.php
berhubung mysql_connect dan kroni-kroninya sudah deprecated, alternatifnya ada dua seperti yg tertulis pada link diatas,
pertama menggunakan mysqli & kedua menggunakan PDO (PHP Data Objek). saya lebih memilih PDO karna beberapa hal.
- PDO mendukung beberapa jenis database, diantaranya Mysql, Oracle, Ms SQL Server, Posrgre SQL dan lainnya. baca : http://php.net/manual/en/pdo.drivers.php
- PDO aman dari serangan Injeksi (SQL Injection) , dengan menggunakan PDO BindParam statement parameter ataupun inputan dari user secara otomatis difilter. Jd kita tidak perlu membuat filter anti injeksi sendiri. Dan masih banyak kelebihan lainnya.
Sebelum menggunakan PDO, kita harus aktifkan dulu drivernya.
Pertama, cari file PHP.INI , untuk menemukannya silahkan lihat dibagian PHP INFO, kemudian lihat pada baris Laded Configuration files,
Lokasi file PHP.INI berbeda-beda, dan namanya pun berbeda tetapi isi dan ektensinya sama, umumnya bernama PHP.INI, bisa dilhat diatas, diserver saya bernama php_production.ini , karna saya menggunakan server portable. Jd agak berbeda, Tinggal sesuaikan dengan server masing-masing.
setelah menemukan file configurasi php (PHP.INI or something like that :D ), kita buka dengan teks editor, kemudian tekan control+F pada keyboard. Lalu ketikkan php_pdo_mysql kemudian enter, maka kita akan diarahkan pada baris PDO driver, disini saya menggunakan database MYSQL, untuk pengguna database lain, tinggal pilih saja dibawah atau diatasnya, setelah ketemu. Hilangkan tanda “;” titik koma (semicolon) pada awal baris, save lalu restart servernya.
kemudian lihat kembali di php info
Sebelum diaktifkan.
Setelah diaktifkan
nah kalau sudah selesai, mari kita mulai tutorialnya
Pertama siapkan dulu Databasenya, yg sederhana saja sekedar buat pembelajaran,
download dimari lalu import ke phpmyadmin
http://www.mediafire.com/view/gvwp12f07730gm2/coba-db_2015-06-22.sql
kemudian untuk membuat koneksi database dengan PDO, codenya cukup mudah. Buat file baru dengan ektensi .PHP (dot php) kemudian ketik code dibawah ini.
$koneksi= new PDO("mysql:host=localhsost;dbname=coba","root","12345");
kita juga bisa menyimpan username password dll kedalam variabel.
berikut contoh disimpan dalam variabel.
$host="localhost"; $database="coba"; $user="root"; $pass="12345"; $koneksi = new PDO("mysql:host=".$host.";dbname=".$database,$user,$pass);
Pakai cara yg mana saja boleh, disimpan kedalam konstanta juga boleh, apa itu konstanta? Kalau belum tau diabaikan saja, karna cara itu tidak akan dibahas disini, ok lanjut ke tutorial, disini saya memakai cara yang pertama karna lebih sederhana.
$koneksi= new PDO("mysql:host=localhsost;dbname=coba","root","12345");
Kemudian menampilkan pemberitahuan ketika koneksi berhasil dijalankan.
echo "Koneksi Sukses";
simpan dan jalankan, berikut hasilnya
sekarang, menampilkan pemberitahuan ketika koneksi gagal dilakukan. Misalnya karna kesalahan host, nama user, password atau database. seperti biasa, kesalahan koneksi database dalam php hanya menampilkan pesan warning dan notice. Berikut contoh pesan warning karna kesalahan username (sebelumnya kita ubah dulu agar usernamenya salah), kemudian simpan, jalankan dan lihat hasilnya.
lumayan ramai dan cukup memusingkan :D, bagi seorang master hal itu mungkin biasa-biasa saja, tp bagi seorang newbie seperti saya tentu itu cukup memusingkan. Untuk lebih menyederhanakan pesan error diatas berikut caranya
- Tambahkan keyword error_reporting(0); untuk menyembunyikan pesan warning dan notice.
- Gunakan blog try catch, block try catch sederhananya adalah block penangan error, seperti halnya java ,cara kerjanya adalah dengan mengeksekusi syntax yg ada di block try terlebih dahulu, dan jika ada kesalahan code dalam block try, maka block catch akan segera dieksekusi.
langsung saja masukkan dalam block try catch
try{ $koneksi = new PDO("mysql:host=localhost;dbname=coba","root","12345"); echo "Koneksi Sukses"; }catch(PDOException $e){ echo "Koneksi Gagal ".$e->getMessage(); }
block try adalah coding yg akan dieksekusi apabila tidak ada kesalahan didalamnya.
block catch untuk penangan error ketika didalam block try terdapat kesalahan.
PDOException -> merupakan error handling untuk PDO
$e -> variabel penampung biasa, disini kita bebas menggunakan nama apa saja, mau $e, $error, $gagal atau lainnya.
echo "Koneksi Gagal " -> pemberitahuan ketika gagal.
$e->getMessage(); -> merupakan notifikasi kesalahan apa yg menyebabkan koneksi gagal dilakukan, jika memakai nama $e maka codingnya $e->getMessage() , jika memakai nama $error maka codingnya $error->getMessage(), dan jika memakai $gagal maka codingnya $gagal->getMessage(); , :D paham kan
Kemudian test masih dengan username yg salah, dan berikut pesan errornya.
sederhana dan mudah diketahui penyebab errornya. Kemudian kita ubah ke username yg benar, dan jalankan.
Kemudian kita tutup koneksi databasenya jika sudah selesai digunakan. Berikut codenya.
if(isset($koneksi)){ $koneksi=null; }
dan code lengkap dibawah ini.
<?php error_reporting(0); try{ $koneksi = new PDO("mysql:host=localhost;dbname=coba","root","12345"); echo "Koneksi Sukses"; }catch(PDOException $e){ echo "Koneksi Gagal ".$e->getMessage(); } if(isset($koneksi)){ $koneksi=null; }
cukup sederhana.
Semoga bermanfaat !
Wassalamualaikum wr.wb.