Anasayfa KonularKonuPDO BeginTransaction Kullanımı

PDO BeginTransaction Kullanımı

27 Ağustos 2015, 16:58 Php Dersleri Ve Kodları Henüz Yorum Yok
0
PDO BeginTransaction Kullanımı

Merhabalar,

Bugün anlatacağım konu bana göre projelerinizde oldukça işinize yarayabilecek bir konu. Öncelikle BeginTransaction nedir? Ona bakalım isterseniz.

En basit anlamda BeginTransaction ile veri tabanında geçici işlemler yaparız. PDO üzerinden yapılan veritabanı değişikliklerinde commit(); çağrısı ile işleme konulur. Bu işlemden sonra geriye dönüş yoktur. Toplu hareketlerde yapılan değişiklikleri geri almak ve tekrar çalıştırmak içinse rollBack(); komutu kullanılır. Bu komut commit(); ile işleme alınmamış değişiklikleri geri almak için kullanılır.

Normalde ekleme, silme, güncelleme gibi işlemlerde sonuç anında veri tabanında uygulanıyordu. Bazı uygulamalarda ise hatalı kayıtta veya silme işleminde sorgunun iptalini isteyebiliriz.

Bir örnek vermek gerekirse;

Bir E-ticaret sitesinde hatalı bir kayıt sonucu kredi kartı tahsilatının iptal edilmesini örnek olarak verebiliriz.

Uygulamalı Örnek;

Öncelikle veri tabanına bağlanalım.


<?php 

$host = "localhost";
$root = "root";
$pass = "";
$vt = "dersler";

try{
	$baglan = new PDO("mysql:host=$host;dbname=$vt;charset=utf8",$root,$pass);
}
catch(PDOException $e){
	$e->getMessage();
}
?>

Uygulama ise şöyle;

 

<?php

// İşlem Başlangıcı
$baglan->beginTransaction();

$sil_var = $baglan->exec("DELETE FROM haber WHERE haber_id = '2'");

// 10 ID'sine sahip bir haber bulunmamaktır.
$sil_yok = $baglan->exec("DELETE FROM haber WHERE haber_id = '10'");

if( ($sil_var == FALSE) || ($sil_yok == FALSE) ){
	$baglan->rollBack();
	echo '<font color="#900">Bir hata oluştu ve işlem geri alındı!</font>';
}
else{
	// İşlemi Tamamla
	$baglan->commit();
}

?>

Normalde 2 tane silme işlemimiz var. Ancak bu işlemlere gelmeden önce BeginTransaction(); ile yapılacak işlemlerin veri tabanında direkt uygulanması önlenip, geçici olarak saklanması sağlanıyor. if komutu ile herhangi bir sorgunun negatif (false) sonuç döndürmesi durumunda işlemi geri aldık. Yani silme işlemini iptal ettik. Eğer sorguların her ikisi de pozitif (true) sonuç döndürseydi silme işlemi gerçekleşecekti.

Faydalı olması dileğiyle iyi çalışmalar.

Önceki konu PDO Etkilenen Satır Sayısı ile ilgili bilgiler vermektedir.

Yorum Yap

Ad - Soyad (Gerçek ad ve soyadınızı giriniz) Varsa İnternet Sitesi ÖR: (http://onurdeger.com.tr) Görüşünüz
Güvenlik Sorusu 2 + 6 = ?
Onur Değer - Kişisel Blog © 2015 - 2016 | Tüm hakları saklıdır. DMCA.com Protection Status