Halo,
ketemu lagi dech sama saya! Pada artikel kali ini kita akan membahas
tentang bagaimana cara membuat koneksi database dengan PHP Data Access
Object.
Koneksi Database Dengan PHP Data Access Object
Artikel
ini terinspirasi oleh beberapa kasus di project yang saya garap. Jadi
singkat cerita ada satu aplikasi yang berjalan dengan menggunakan dua
buah DBMS, waktu itu aplikasinya berjalan dengan menggunakan MySQL
lalu suatu waktu ada kondisi dimana kita harus melakukan upgrade
database, kita upgrade dech DBMS-nya dengan menggunakan
PostgreSQL. Nah waktu itu saya berpikir untuk membuat ulang semua query
SQLnya. Tapi akhirnya saya sadar ternyata metode itu bener-bener
merepotkan. Akhirnya saya dapat dech solusinya, yaitu dengan menggunakan
Data Access Object atau DAO.
Data Access Object (DAO) adalah
sebuah object yang menyediakan antarmuka abstrak ke beberapa jenis
database. Pada kasus ini saya akan menggunakan PHP Data Object atau
PDO untuk contoh koneksinya. Perlu diperhatikan bahwa kamu tidak bisa
nulis fungsi-fungsi database menggunakan ekstensi PDO dengan sendirinya,
kamu harus menggunakan driver PDO dengan database yang spesifik supaya
kamu bisa mengakses database tersebut.
Tapi tenang aja koq, saya
akan jabarin caranya supaya memungkinkan kamu untuk bisa
menentukan akses ke database apapun seperti MySQL, SQLite, Oracle,
PostgreSQL dan lain-lain. Pertama-tama kita akan membuat struktur dasar
dari class DAO, buka texteditor dan ketikkan code dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
<?php class dao { private $db = NULL; private $connection_string = NULL; private $db_host = DB_HOST; private $db_user = DB_USER; private $db_pass = DB_PASS; private $db_name = DB_NAME; private $con = false; public function __construct() { // code } public function connect() { // code } public function disconnect() { // code }}
|
Kode diatas terdiri dari 3 Method dan 7 Private Properties, properties tersebut diantaranya adalah :
- $db – variable ini menyimpan koneksi yang terbuka dengan menggunakan PDO
- $connection_string – variable ini digunakan untuk membangun koneksi ke Database
- $db_host – variable ini merupakan host dari database.
- $db_user – variable ini merupakan username dari akses database.
- $db_pass – variable ini adalah password dari hak akses database.
- $db_name – variable ini adalah nama database yang akan diakses.
- $con – variable ini digunakan untuk mengecek koneksi database yang sedang aktif.
Koneksi Database Dengan PHP Data Access Object # Method Constructor
Untuk
dikasus ini kita akan menggunakan MySQL saja dulu ya, silahkan
dikembangkan kalau kamu mau mencoba metode ini dengan menggunakan DBMS
yang lain. Ok sekarang kita akan menambahkan script pada method
contructor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
<?php class dao{ private $db = NULL; private $connection_string = NULL; private $db_type = DB_TYPE; private $db_path = DB_PATH; private $db_host = DB_HOST; private $db_user = DB_USER; private $db_pass = DB_PASS; private $db_name = DB_NAME; private $con = false; public function __construct($db_user = DB_USER, $db_pass = DB_PASS, $db_name = DB_NAME, $db_type = 'mysql', $db_path = DB_PATH, $db_host = 'localhost') { $this->db_host = $db_host; $this->db_user = $db_user; $this->db_pass = $db_pass; $this->db_name = $db_name; $this->db_path = $db_path; $this->db_type = $db_type; switch($this->db_type){ case "mysql": $this->connection_string = "mysql:host=".$db_host.";dbname=".$db_name; break; case "sqlite": $this->connection_string = "sqlite:".$db_path; break; case "oracle": $this->connection_string = "OCI:dbname=".$db_name.";charset=UTF-8"; break; case "dblib": $this->connection_string = "dblib:host=".$db_host.";dbname=".$db_name; break; case "postgresql": $this->connection_string = "pgsql:host=".$db_host." dbname=".$db_name; break; } return $this; }
|
Pada script diatas, saya menambahkan lagi 2 buah
properties, diantaranya adalah :
- $db_type – variable ini digunakan untuk menentukan DBMS-nya
- $db_path – ini digunakan kalau DBMSnya SQLite, digunakan untuk menentukan letak databasenya.
Koneksi Database Dengan PHP Data Access Object # connect()
Sekarang kita perbaharui lagi scriptnya dengan menambahkan method
connect().
|
public function connect() { // cek koneksi apa udah tersambung atau belum if(!$this->con) { try { $this->db = new PDO($this->connection_string,$this->db_user, $this->db_pass); $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->con = true; return $this->con; } catch (PDOException $e) { return $e->getMessage(); } } else { return true; // kalo sudah konek sebelumnya, diem aja } }
|
Koneksi Database Dengan PHP Data Access Object # disconnect()
Nah, sekarang kita ubah method
disconnect()
|
public function disconnect() { if($this->con) { unset($this->db);$this->con = false; return true; }}
|
Koneksi Database Dengan PHP Data Access Object # Complete Code
nah, sekarang untuk coding lengkapnya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
<?php class dao{ private $db = NULL; private $connection_string = NULL; private $db_type = DB_TYPE; private $db_path = DB_PATH; private $db_host = DB_HOST; private $db_user = DB_USER; private $db_pass = DB_PASS; private $db_name = DB_NAME; private $con = false; public function __construct($db_user = DB_USER, $db_pass = DB_PASS, $db_name = DB_NAME, $db_type = 'mysql', $db_path = DB_PATH, $db_host = 'localhost') { $this->db_host = $db_host; $this->db_user = $db_user; $this->db_pass = $db_pass; $this->db_name = $db_name; $this->db_path = $db_path; $this->db_type = $db_type; switch($this->db_type){ case "mysql": $this->connection_string = "mysql:host=".$db_host.";dbname=".$db_name; break; case "sqlite": $this->connection_string = "sqlite:".$db_path; break; case "oracle": $this->connection_string = "OCI:dbname=".$db_name.";charset=UTF-8"; break; case "dblib": $this->connection_string = "dblib:host=".$db_host.";dbname=".$db_name; break; case "postgresql": $this->connection_string = "pgsql:host=".$db_host." dbname=".$db_name; break; } return $this; } public function connect() { // cek koneksi apa udah tersambung atau belum if(!$this->con) { try { $this->db = new PDO($this->connection_string,$this->db_user, $this->db_pass); $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->con = true; return $this->con; } catch (PDOException $e) { return $e->getMessage(); } } else { return true; // kalo udah konek sebelumnya, diem aja } } public function disconnect() { if($this->con) { unset($this->db);$this->con = false; return true; } }}
|
Untuk cara penggunaanya seperti ini
|
<?php$db = new dao('myusername','mypassword','mydatabase');if ($db->connect()) { echo "tersambung dengan database";} else { echo "gagal tersambung"}
|
Ok
sekian dulu untuk koneksinya, untuk artikel berikutnya saya akan
melengkapinya lagi dengan CRUD. mungkin kamu bisa membaca lagi artikel
lama saya tentang PDO.
- Select Data Dengan PHP Data Object
- Input Data Dengan PHP Data Object
- Update Data Dengan PHP Data Object
Silahkan dicoba, dikembangkan dan semoga bermanfaat
Post a Comment
Diharapkan jangan berkata-kata yang kurang enak, karena itu akan mengganggu orang yang membacanya, dan berikan saran anda jika blog kami masih kurang berkenan.
terimakasih,
Admin