Selamat Datang

PHP : Migrasi dari Ekstensi Mysql ke PDO

Pasti saat pertama kali belajar pemrograman PHP sebagian besar dari kita mempelajari fungsi mysql_*** (mysql_connect(), mysql_query(), mysql_fetch_array(), dll ) untuk berinteraksi dengan database MySql.

Bersiap-siap lah mempelajari cara baru untuk melakukan operasi database karena tim pengembang PHP menyatakan akan membuang fungsi-fungsi ektensi mysql (mysql_***) pada rilis PHP mendatang. Berdasarkan link ini tim pengembang memang akan membuang fungsi ektensi mysql tetapi tidak dengan cara tiba-tiba.

Greetings PHP geeks,

Don’t panic! This is not a proposal to add errors or remove this popular extension. Not yet anyway, because it’s too popular to do that now.

The documentation team is discussing the database security situation, and educating users to move away from the commonly used ext/mysql extension is part of this.

Berdasarkan pengumuman itu pula para pengembang PHP disarankan untuk menggunakan 2 alternatif pengganti ekstensi mysql, yaitu pdo_mysql dan mysqli.

Nah, kalau tidak percaya silahkan saja baca sendiri di link diatas tadi :D

Kalau sudah membaca berarti sekarang saatnya belajar menggunakan PDO untuk berinteraksi dengan database apapun, bukan hanya MySql. Bagaimana? jauh lebih keren kan?

PHP PDO

Koneksi ke Database

PDO ini mendukung beberapa database populer, tidak hanya mysql seperti yang didukung oleh fungsi mysql_***. Beberapa database yang disupport oleh PDO diantaranya :

  • MySql
  • Firebird
  • IBM DB2
  • PostgreSql
  • Sql Lite

Untuk melakukan koneksi terhadap database MySql, kita menggunakan cara sebagai berikut

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'username';

/*** mysql password ***/
$password = 'password';

/*** mysql database ***/
$database= 'namaDatabase';
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    /*** mencetak pesan kalau database sudah berhasil terhubung ***/
    echo 'Terkoneksi dengan database';
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

Dilihat dari syntax diatas terlihat bahwa PDO menggunakan konsep OOP. Nah.. karena PHP kedepannya memang mengarah ke jalur OOP maka sudah seharusnya untuk mulai belajar paradigma pemrograman berorientasi objek :D.

Setiap kali kita sudah membuka koneksi ke sebuah database maka kita wajib untuk menutupnya ketika sudah tidak digunakan lagi. Untuk menutupnya kita cukup memberi nilai null terhadap objek koneksi

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'username';

/*** mysql password ***/
$password = 'password';

/*** mysql database ***/
$database= 'namaDatabase';
try {
    $koneksi = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    /*** mencetak pesan kalau database sudah berhasil terhubung ***/
    echo 'Terkoneksi dengan database';
    
   /*** Menutup koneksi ***/
    $koneksi=null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

Insert Query

Untuk memasukkan data kedatabase tentunya kita menggunakan query insert. Bagaimana penggunaannya pada PDO?, simak contoh berikut. Saya menggunakan Prepared Statement karena teknik ini aman dari gangguan sql injection selain itu objek prepared statment dicompile terlebih dahulu sehingga untuk pemanggilan selanjutnya akan cepat.

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'username';

/*** mysql password ***/
$password = 'password';

/*** mysql database ***/
$database= 'namaDatabase';
try {
    $koneksi = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    /*** mencetak pesan kalau database sudah berhasil terhubung ***/
    echo 'Terkoneksi dengan database';
    
    /*** Nilai dalam variabel ***/
    $nim="L2F008002";
    $nama="Agung Setiawan";
    $jenisKelamin="Laki-Laki";

   /*** perintah eksekusi query ***/
    $preparedStatement=$koneksi->prepare("INSERT INTO mahasiswa(nim,nama,jenis_kelamin) value(:nim,:nama,:jenisKelamin) ");
    $preparedStatement->bindParam(":nim",$nim);
    $preparedStatement->bindParam(":nama",$nama);
    $preparedStatement->bindParam(":jeniskelamin",$jenisKelamin);
    $preparedStatement->execute();
    
    /*** menutup koneksi ***/
    $koneksi=null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

Tidak sesulit yang dibilang orang-orang kan tentang bagaimana itu OOP :-)

Update Query

Kalau sudah ada data yang masuk pada database besar kemungkinan suatu saat kita ingin mengubah data tersebut. Disnilah peran query upadate dimainkan.

Tekniknya hampir sama dengan teknik insert data diatas.

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'username';

/*** mysql password ***/
$password = 'password';

/*** mysql database ***/
$database= 'namaDatabase';
try {
    $koneksi = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    /*** mencetak pesan kalau database sudah berhasil terhubung ***/
    echo 'Terkoneksi dengan database';
    
    /*** Nilai dalam variabel ***/
    $nim="L2F008002";
    $nama="Agung Setiawan ST";

   /*** perintah eksekusi query ***/
    $preparedStatement=$koneksi->prepare("UPDATE mahasiswa set nama=:nama where nim=:nim ");
    $preparedStatement->bindParam(":nim",$nim);
    $preparedStatement->bindParam(":nama",$nama);
    $preparedStatement->execute();
    
    /*** menutup koneksi ***/
    $koneksi=null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

Select Query

Untuk melakukan pengambilan data pada database pun tidak kalah gampangnya dari teknik-teknik yang telah saya perkenalkan diatas. Silahkan disimak pada code dibawah ini

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'username';

/*** mysql password ***/
$password = 'password';

/*** mysql database ***/
$database= 'namaDatabase';
try {
    $koneksi = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    /*** mencetak pesan kalau database sudah berhasil terhubung ***/
    echo 'Terkoneksi dengan database';
    
    /*** Nilai dalam variabel ***/
    $nim="L2F008002";

    /*** Perintah Eksekusi Query ***/
    $preparedStatement=$koneksi->prepare("SELECT nim,nama,jenis_kelamin from mahasiswa where nim=:nim");
    $preparedStatement->bindParam(":nim",$nim);
    $preparedStatement->execute();
    
    /*** Menampikan Hasil Perintah Select ***/
    $results=$preparedStatement->fetchAll();
    foreach($results as $result){
      echo $result["nim"];
      echo $result["nama"];
      echo $result["jenis_kelamin"];
    }
    
    /*** menutup koneksi ***/
    $koneksi=null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

Delete Query

yang terakhir adalah cara untuk menghapus data

Teknik ini masih gampang juga seperti sebelumnya jadi tenang saja

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'username';

/*** mysql password ***/
$password = 'password';

/*** mysql database ***/
$database= 'namaDatabase';
try {
    $koneksi = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
    /*** mencetak pesan kalau database sudah berhasil terhubung ***/
    echo 'Terkoneksi dengan database';
    
    /*** Nilai dalam variabel ***/
    $nim="L2F008002";

    /*** Perintah Eksekusi Query ***/
    $preparedStatement=$koneksi->prepare("DELETE FROM mahasiswa where nim=:nim");
    $preparedStatement->bindParam(":nim",$nim);
    $preparedStatement->execute();
    
    
    /*** menutup koneksi ***/
    $koneksi=null;
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }
?>

Kesimpulan

Bagaimana tanggapan teman-teman setelah mengenal PDO serta cara penggunaanya sekaligus teknik OOP?

Pastinya mulai sekarang biasakan menggunakan teknik OOP dalam melakukan pemrograman.
Pastinya juga mulai tinggalkan fungsi ektensi mysql karena dalam waktu depan akan dihilangkan

Semoga tulisan ini bermanfaat
Salam Coding dari Nusantara





Penulis :

Software Engineer | .NET | Beautiful Code | Book Lover View all posts by Agung Setiawan

Comments

12 thoughts on “PHP : Migrasi dari Ekstensi Mysql ke PDO

  1. orlandolabz says:

    thx om agung, mudah2 an saya bisa move on :D

  2. hakim says:

    keren, baru tau cara pengunaan PDO, makasih bang twd

  3. thedewaku says:

    Baru ngerti kalau ada PDO, wah jadi lebih asyik kalau maen konsep OOP codingan jadi lebih mudah :v

  4. jun says:

    “Setiap kali kita sudah membuka koneksi ke sebuah database maka kita wajib untuk menutupnya ketika sudah tidak digunakan lagi.”

    itu kenapa ya?
    bukanya kalo ditutup malah ga bisa insert update dll?

  5. hafid says:

    apa PHPnya update lagi ke versi 5.5 klo pkek PDO mysqlnya ?

    jadi versi 5.4 kebawah bisa pkek lama dong

  6. fajri says:

    Oh begini yaa PDO. Thanks

  7. Saya sudah kembangkan sekaligus dengan fungsi CRUD OOP dan memakai Active Record

  8. husnil says:

    terima kasih atas tutornya, ada beberapa artikel dari web ini saya gunakan… ilmu bermanfaat… :D

    mari di ramaikan juga websitenya om :D

    httpx://deknzr[dot]com

  9. wahyu says:

    mas contoh di atas kan yg menggunakan MySql klok contoh yg menggunakan Firebird bagaimana ??? tolong shering mas. . . . .

  10. Yusuf says:

    bagaimana kalau menggunakan looping while..?? sebelumnya aku menggunakan mysql(i)_fetch_array

  11. grosirbros says:

    makasih pak agung.. jadi tau ni cara penggunaannya

Leave a Comment

XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


Klik Tombol Like / Suka ya kawan..

Klik tombol "Like" atau "Suka" untuk mendapatkan update tutorial, tips & tricks serta info terbaru seputar dunia web design & development