CRUD Menggunakan PDO (PHP Data Object)

Buat: 03/06/2013 - 12:01
CRUD Menggunakan PDO (PHP Data Object)

jika sebelum nya kita telah mengenal extensi/librari MySQL dan MySQLi, kali ini kita akan berkenalan dengan PDO, sama hal nya dengan MySQL dan MySQLi, PDO adalah database akses layer untuk PHP versi 5.xx yang di gunakan untuk mengakses database dari PHP, PDO menyediakan metode yang seragam untuk pengaksesan ke beberapa database artinya ketika kita menggunakan database yang di dukung oleh Driver PDO seperti MySQL, Oracle, PostgreSQL dan sebagai nya kita hanya cukup membuat script yang sama menggunakan PDO, yang berbeda hanyalah String koneksi nya sehingga akan meningkatkan prodiktivitas.

Untuk mengetahui database apa aja yang di dukung oleh PDO temen-teman bisa lihat di -> http://www.php.net/manual/en/pdo.drivers.php. Cara gampang nya bisa menggunakan perintah ini

print_r(PDO::getAvailableDrivers()); 

jika teman-teman masih mempunya pertanyaan yang mengganjal mengenai PDO, seperti: knapa harus PDO?, apa kelebihan PDO?, gimana cara penulisa String PDO? Dan sebagai nya Silahkan baca disini disana, karena pada tulisan ini saya tidak akan membahas itu, disini saya cuman ingin berbagi “class Crud” yang kami buat. Dimana didalam class Crud tersebut terdapat fungsi insert, delete, update record. Knapa class crud ini di buat? Tujuan nya agar readability(mudah di baca), modularity(pemecahan program menjadi modul-modul), reusability(dapat di gunakan kembali). Saya rasa sudah cukup basa basi nya. Berikut adalah class crud yang kami buat.

*pdo.crud.class.php* <-- Nama file nya

<?php

/*
* File Name: pdo.crud.classphp
* Date: march 4, 2013
* Author: Faiz Fadly
* email : [email protected]
* Facebook : https://www.facebook.com/sourcecodeonline
* referensi:
* http://php.net/manual/en/class.pdo.php
* http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers#Why_use_PDO.3F
*
*/

class crud extends PDO{
    private $engine;
    private $host;
    private $database;
    private $user;
    private $pass;
      
    private $result;   
    
    public function __construct()
        {
        $this->engine   = 'mysql';
        $this->host             = 'localhost';
        $this->database = 'test';
        $this->user     = 'root';
        $this->pass     = '';
              
        $dns = $this->engine.':dbname='.$this->database.";host=".$this->host;
        parent::__construct( $dns, $this->user, $this->pass );
    }
      
        /*
    * Insert values into the table
    */
        public function insert($table,$rows=null)
        {
                $command = 'INSERT INTO '.$table;
                $row = null; $value=null;
                foreach ($rows as $key => $nilainya)
                {
                  $row  .=",".$key;
                  $value        .=", :".$key;
                }
              
                $command .="(".substr($row,1).")";
                $command .="VALUES(".substr($value,1).")";
                
          
                $stmt =  parent::prepare($command);
                $stmt->execute($rows);
                $rowcount = $stmt->rowCount();
                return $rowcount;
        }
      
        /*
    * Delete records from the database.
    */
        public function delete($tabel,$where=null)
        {
                $command = 'DELETE FROM '.$tabel;
              
                $list = Array(); $parameter = null;
                foreach ($where as $key => $value)
                {
                  $list[] = "$key = :$key";
                  $parameter .= ', ":'.$key.'":"'.$value.'"';
                }
                $command .= ' WHERE '.implode(' AND ',$list);
          
                $json = "{".substr($parameter,1)."}";
                $param = json_decode($json,true);
                              
                $query = parent::prepare($command);
                $query->execute($param);
                $rowcount = $query->rowCount();
        return $rowcount;
        }
      
        /*
    * Uddate Record
    */
        public function update($tabel, $fild = null ,$where = null)
        {
                 $update = 'UPDATE '.$tabel.' SET ';
                 $set=null; $value=null;
                 foreach($fild as $key => $values)
                 {
                         $set .= ', '.$key. ' = :'.$key;
                         $value .= ', ":'.$key.'":"'.$values.'"';
                 }
                 $update .= substr(trim($set),1);
                 $json = '{'.substr($value,1).'}';
                 $param = json_decode($json,true);
                
                 if($where != null)
                 {
                    $update .= ' WHERE '.$where;
                 }
                
                 $query = parent::prepare($update);
                 $query->execute($param);
                 $rowcount = $query->rowCount();
         return $rowcount;
    }
      
      
        /*
    * Selects information from the database.
    */
        public function select($table, $rows, $where = null, $order = null, $limit= null)
        {
            $command = 'SELECT '.$rows.' FROM '.$table;
        if($where != null)
            $command .= ' WHERE '.$where;
        if($order != null)
            $command .= ' ORDER BY '.$order;           
        if($limit != null)
            $command .= ' LIMIT '.$limit;
                      
                $query = parent::prepare($command);
                $query->execute();
              
                $posts = array();
                while($row = $query->fetch(PDO::FETCH_ASSOC))
                {
                         $posts[] = $row;
                }
                return $this->result = json_encode(array('post'=>$posts));
        }

        /*
    * Returns the result set
    */
        public function getResult()
        {
        return $this->result;
    }
      
      
}

?>


Cara penggunaan nya tinggal include class tersebut ke file .php yang kita buat, kemudian kita intansiasikan dengan keyword NEW untuk membuat object dari class tersebut. Oklah langsung contoh aja biar gak pusing dengering gw ngocek bukan nya tambah ngerti malah tambah bingung hehe… berikut contoh penggunaan nya:

Insert.php

<?php

include "../__class/pdo.crud.class.php";

$db = new crud();

//#Insert - Contoh
$tabel = "mahasiswa";
$nama  = "Syafi'i";

$data = array( 'nim' => "061250256",
              'nm_mhs' => $nama,
               'alamat' => "jalan ulujami Raya Gg.pancoran",
              'tanggal' => "2011-03-09"
              );

echo $db->insert($tabel, $data);

?>
Jika return nya angka 1 itu arti nya data berhasil di masukkan, jika 0 gagal

Update.php

<?php

include "../__class/pdo.crud.class.php";

$db = new crud();

//#update - Contoh
$tabel = "mahasiswa";

$updatefild = array('nm_mhs' => "fitriyana1",
                     'alamat' => "fadly"
                 );
$where = "nim = '061250256'";

echo $db->update("mahasiswa",$updatefild, $where);

?>

Select.php

<?php

include "../__class/pdo.crud.class.php";

$db = new crud();

//#Select - Contoh
$tabel = "mahasiswa";
$fild  = "*"; //menampilkan semua fild
$where = "nim='061250256'"; // tampilkan yang nim -> 0612502526

$db->select($tabel,$fild,$where);
$hasil = $db->getResult();

echo $hasil; //data di tampilkan dalam format json
?>

delete.php

<?php

include "../__class/pdo.crud.class.php";

$db = new crud();

//#Delete - Contoh
$tabel = "mahasiswa";
$where = array("nim" => "061250256");

echo $db->delete($tabel, $where);

?>

source code bisa di download disini

Semoga Bermanfaat, jika ada pertanyaan kirim ke [email protected] Tetap sehat tetap semangat biar bias coding trus hehe… :)

About Author

Tentang PHP Indonesia

PHP Indonesia adalah sebuah komunitas untuk semua orang yang mencintai PHP. Fokus utama kami adalah pemrograman menggunakan bahasa PHP, namun tidak menutup kemungkinan pembahasan yang mencakup keseluruhan LAMP stack. Topik bisa dari pemrograman PHP, penanganan memcached, optimasi database, konfigurasi server, tuning server web, application deployment, framework PHP, hosting pilihan dan sebagainya.

Petunjuk Penulisan

Berikut ini adalah beberapa petunjuk penulisan artikel. Petunjuk dibuat bukan untuk membatasi tetapi demi menjaga kualitas artikel yang terpublikasi di situs ini. Selain itu, keseragaman gaya bahasa dapat menjaga readibilitas (tingkat keterbacaan) sehingga pembaca akan lebih nyaman dalam membaca artikel di situs ini.