PHP PDO MySQL, Simpan Edit Hapus Data dengan PDO

Jun 2, 2013 by Ellyx Christian Level: Menengah Komentar Print

PDO (PHP Data Objects) adalah php extension untuk mengakses database, sama seperti mysql_query atau mysql_fetch_array. Saat ini fungsi seperti mysql_query dan mysql_fetch_array sudah di-deprecated dan akan segera dihapus. Oleh karena itu kita perlu segera beralih menggunakan PDO atau MySQLi untuk menyimpan, edit atau hapus data. PDO bisa dipakai untuk mengakses beberapa database berbeda, sedangkan MySQLi hanya untuk database mysql. Jika saat ini kita menggunakan database MySQL dan di kemudian hari berganti menggunakan database PostgreSQL maka kita tidak perlu lagi mengubah kode yang sudah dibuat.

Membuat Koneksi ke Database dengan PDO

Sebelumnya kita membuat koneksi ke database menggunakan fungsi mysql_connect seperti:

$host = "localhost";
$user = "root";$password = "";
$database_name = "test";
mysql_connect($host, $user, $password);
mysql_select_db($database_name);

Menggunakan PDO juga cukup mudah dan hampir mirip, seperti:

$host = "localhost";
$user = "root";$password = "";
$database_name = "test";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password);

Kemudian dengan PDO kita bisa menggatur error mode, mengatur bagaimana penanganan error yang terjadi. Misal throw error yang terjadi.

$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));

Menyimpan Data dengan PDO

Misalkan kita punya sebuah tabel dengan nama siswa dengan struktur seperti:

Nama Field Tipe Data Keterangan
nis varchar(20) Nomor Induk siswa, Primary Key
nama varchar(50)
jenis_kelamin char(1)
tgl_lahir date

Sebelumnya kita menggunakan mysql_query untuk menyimpan data seperti:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
mysql_connect($host, $user, $password);
mysql_select_db($database_name);
$query = "insert into siswa (nis,nama,jenis_kelamin,tgl_lahir) values ('001','Budi', 'L','1987-06-01')";
hasil = mysql_query($query);
if($hasil){  
  echo "Data siswa telah disimpan";  
 }else{  
  echo "Error! gagal menyimpan data siswa:".mysql_error();  
 }

Menggunakan PDO menjadi sedikit berbeda, seperti:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
try{
    $query = $pdo->prepare("insert into siswa (nis,nama,jenis_kelamin,tgl_lahir) 
        values (:nis,:nama, :jenis_kelamin,:tgl_lahir)");
    $dataSiswa = array(
        ':nis' => '001',
        ':nama' => 'Budi',
        ':jenis_kelamin' => 'L',
        ':tgl_lahir' => '1987-06-01'
    );
    $query->execute($dataSiswa);
    echo "Data siswa telah disimpan";
}catch(PDOException $e){
    echo "Error! gagal menyimpan data siswa:".$e->getMessage();  
}

Menampilkan data dengan PDO

Menampilkan data menggunakan PDO hampir sama dengan mysql_fetch_array. Sebelumnya kita menggunakan mysql_fetch_array untuk menampilkan data seperti:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
mysql_connect($host, $user, $password);
mysql_select_db($database_name);
$query = mysql_query("select * from siswa");
?>
<table>
<tr>
    <td>Nis</td>
    <td>Nama</td>
    <td>Jenis Kelamin</td>
    <td>TGL Lahir</td>
</tr>
<?php while($siswa = mysql_fetch_array($query)){?>
<tr>
    <td><?php echo $siswa['nis']?></td>
    <td><?php echo $siswa['nama']?></td>
    <td><?php echo $siswa['jenis_kelamin']?></td>
    <td><?php echo $siswa['tgl_lahir']?></td>
</tr>
<?php }?>
</table>

Jika menggunakan PDO akan menjadi

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
$query = $pdo->prepare("select * from siswa");
$query->execute();
?>
<table>
<tr>
    <td>Nis</td>
    <td>Nama</td>
    <td>Jenis Kelamin</td>
    <td>TGL Lahir</td>
</tr>
<?php while($siswa = $query->fetch()){?>
<tr>
    <td><?php echo $siswa['nis']?></td>
    <td><?php echo $siswa['nama']?></td>
    <td><?php echo $siswa['jenis_kelamin']?></td>
    <td><?php echo $siswa['tgl_lahir']?></td>
</tr>
<?php }?>
</table>

Mengedit Data dengan PDO

Mengedit data menggunakan PDO hampir mirip dengan cara menyimpan data di atas. Menggunakan mysql_query untuk mengedit data akan seperti:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
mysql_connect($host, $user, $password);
mysql_select_db($database_name);
$query = "update siswa set nama = 'Budi Setio',jenis_kelamin = 'L',tgl_lahir='1988-06-01' where nis='001'";
hasil = mysql_query($query);
if($hasil){  
  echo "Data siswa telah diupdate";
 }else{  
  echo "Error! gagal mengedit data siswa:".mysql_error();
 }

sedangkan menggunakan PDO akan menjadi:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
try{
    $query = $pdo->prepare("update siswa set nama = :nama, jenis_kelamin = :jenis_kelamin, 
        tgl_lahir = :tgl_lahir where nis = :nis");
    $data = array(
        ':nama' => 'Budi Setio',
        ':jenis_kelamin' => 'L',
        ':tgl_lahir' => '1988-06-01',
        ':nis' => '001'
    );
    $query->execute($data);
    echo "Data siswa telah diupdate";
}catch(PDOException $e){
    echo "Error! gagal mengedit data siswa:".$e->getMessage();
}

Hapus Data dengan PDO

Mengapus data dengan PDO kurang lebih sama seperti edit data tapi lebih sederhana. Jika menggunakan mysql_query akan seperti:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
mysql_connect($host, $user, $password);
mysql_select_db($database_name);
$nis = "001";
$hasil = mysql_query("delete from siswa where nis='".$nis."'");
if($hasil){
    echo "Data siswa sudah dihapus";
}else{
    echo "Gagal menghapus data siswa:".mysql_error();
}

Sedangkan jika menggunakan PDO akan menjadi:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database_name = "test";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
try{
    $query = $pdo->prepare("delete from siswa  where nis = :nis");
    $query->execute(array(
        ':nis' => '001'
    ));
    echo "Data siswa sudah dihapus";
}catch(PDOException $e){
    echo "Gagal menghapus data siswa:".$e->getMessage();
}

Keuntungan Menggunakan PDO

Beberapa manfaat yang dapat diperoleh dari menggunakan PDO. Pertama PDO membantu mencegah SQL injection, PDO secara otomatis akan mengquote inputan user. Kedua PDO bisa digunakan untuk mengakses beberapa database berbeda . Jika hari ini kita menggunakan database MySQL, pada saat berganti database ke PostgreSQL maka tidak perlu lagi mengubah kode yang sudah dibuat. Yang ketiga PDO sudah mendukung database transaction . Yang keempat PDO lebih cepat bila dibandingkan dengan menggunakan fungsi mysql_query.


Silahkan login atau register sebelum meninggalkan komentar.