PHP MySQL 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.