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.
0 komentar:
Posting Komentar