PHP MySQL TRANSACTION Kullanımı

php transaction kullanımıPhp Transaction işlemini bankacılık işlemlerindeki para transferi esnasında kullanılan bir işlem gibi düşünebiliriz ve bu işlemin önemi kritik seviyededir . Bu sebeple işlem esnasında herhangi bir hata oluştuğu zaman işlemin geriye alınması gerekmektedir . Bunu şu şekilde bir örnekle açıklayabiliriz .

A kişisi hesabından B kişisine 500 TL para göndermek istediğinde A kişisinin hesabından 500 TL düşülecek ve B kişisinin hesabına 500 TL eklenmesi eklenecektir. Ancak A kişisinin hesabından 500 TL düşüldükten sonra B kişisinin hesabına 500 TL eklenmeden bir hata oluşması durumunda orataya can sıkıcı bir durum çıkacaktır . İşte bu tarz can sıkıcı durumların önüne geçmek için PHP’de MySQL TRANSACTIONS kullanılır.

PHP MYSQL Transaction işlemi basit 3 adımda yapılmaktadır .

Transaction başlatılması “beginTransaction()”
Transaction başladıktan sonra yapılan işlemler başarılı ise onları işlemek “commit()”
Transaction eğer başarılı değil ve işlemi geri almak gerekiyorsa “rollBack ()”

Örnek olarak aşağıdaki kodumuzu inceleyelim .

<?php

// veri tabanı bağlantımızı gerçekleştiriyoruz

$host = "localhost";
$username = "root";
$password = "123456";
$dbname = "testveritabani";


//Yukarıdak belirtilen bilgiler ile veritabanına bağlanıyoruz.
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Yukarıda belirttiğimiz Transaction işlemini burada başlatıyoruz
$conn->beginTransaction();

$isim='Serhat';
$soyisim='Alpaslan';
$eposta='serhat@serhatalpaslan.com';

//prepare methodu ile insert sorgumuzu yazıyoruz fakat değerler yerine gerçek değerleri yazmıyoruz
$stmt=$conn->prepare("INSERT INTO isimler (isim, soyisim, email) VALUES (:isim, :soyisim, :email)");

//değerleri bind etmenin bir diğer yöntemi

$resultInsert=$stmt->execute([
":isim" => $isim,
":soyisim" => $soyisim,
":email" => $eposta,
]); //bu işlem eğer başarılı olursa sonuc TRUE Boolean değeri olarak dönecektir.


$stmt = $conn->prepare("UPDATE isimler set isim=:isim WHERE id=:id");
$resultUpdate = $stmt->execute([
":isim" => "Serhat",
":id" => "90"
]);

//Tüm işlemler başarılı ise
if($resultInsert && $resultUpdate){
//Başlattığımız transaction-nın commit edilmesini sağlıyoruz
$conn->commit();
echo "<br>"."Tüm işlemler başarıyla gerçekleşti";
}else {
//Başlattığımız transaction aşağıdaki komut ile geri alınıyor.
$conn->rollBack();
echo "<br>"."Tüm işlemler iptal edildi ve geri alındı.";
}

//veritabanından veri çekiyoruz
$query = $conn->prepare("SELECT * FROM isimler");
$query->execute(); //Bir hazır deyimi çalıştırır
$result=$query->fetchAll(PDO::FETCH_ASSOC); 

?>

yukarıdaki örnekte php transaction işleminin nasıl yapıldığını anlatan basit bir örnek hazırladık . Ancak php transaction işlemlerini tabiki de sadece parasal işlemler de kullanıldığını düşünmek yanlış olacaktır . Bu sebeple php ile transactions konusunu üzerine ileride daha farklı kullanım şekilleri üzerine birşeyler hazırlarız.

Bu adresden Php Transaction için daha fazla bilgi bulabilirsiniz. Ayrıca diğer php derslerini de inceleyebilirsiniz.

Yorum Ekle