Aplikasi PHP menggunakan Transaction database

Pada aplikasi terkadang kita membutuhkan proses transaksi saat menjalankan query ke database, rangkaian query akan dieksekusi dan akan di commit jika tidak terjadi kesalahan dan akan dikembalikan seperti semula ( rollback ) jika satu atau lebih query dinyatakan error ( gagal insert/update ).

Beberapa vendor RDBM telah mensupport transaction, pada contoh ini menggunakan database MySQL 5 dengan engine InnoDB.

Pada konsol mysql, transaction dinyatakan dalam perintah berikut ini :


mysql> start transcation ;

mysql> insert into pembelian (nomor,idproduk,jumlah,harga) values ('P01',2,3,40000);

mysql> update produk set stok = stok + 3 where idproduk=2;

mysql> commit

Pada skrip PHP untuk dengan library abstraksi database PDO (PHP Data Object), memulai transaksi dengan memanggil method beginTransaction() , commit() atau rollback() .

Berikut contoh programnya

<?php
try {
$dbh 	= new PDO('mysql:host=localhost;dbname=latihan','oca','ok');
// 	memulai transaksi
$dbh->beginTransaction();
// 	query pertama
$sql1 = "insert into pembelian (nomor,idproduk,jumlah,harga) values ('P01',2,3,40000)";
$dbh->exec($sql1);
// 	query kedua
$sql2 = "update produk set stok = stok + 3 where idproduk=2";
$dbh->exec($sql2);
//commit transaksi
$dbh->commit();
} catch (Exception $e) {
// batalkan transaksi
$dbh->rollback();
echo "Failed: " . $e->getMessage();
?>

Post a Response