Veritabanı işlemleri, web uygulamalarının temel yapı taşlarından biridir. Kullanıcıların bilgilerini kaydetmek, verileri güncellemek veya silmek için sık sık veritabanına erişim sağlarız. Ancak, bazen beklenmedik hatalar veya istisnai durumlarla karşılaşabiliriz. Bu gibi durumlarda, işlemleri geri almadan önce veritabanını tutarlı bir durumda korumak önemlidir. PDO (PHP Data Objects), PHP ile veritabanlarına bağlanmak ve işlemek için kullanılan güçlü bir araçtır. Bu makalede, PDO kullanarak veritabanı işlemlerini nasıl güvende tutacağımızı ve transaction rollback kullanımının önemini öğreneceğiz.
PDO Nedir?
PDO (PHP Data Objects), PHP ile farklı veritabanı sistemlerine erişmek için kullanılan bir veri erişim katmanıdır. PDO, veritabanı işlemlerini standartlaştırır ve farklı veritabanı sürücülerine kolayca geçiş yapmanızı sağlar. MySQL, PostgreSQL, SQLite gibi yaygın veritabanı sistemleriyle uyumludur.
Transaction Nedir?
Transaction (işlem), bir veya birden fazla veritabanı sorgusunu tek bir mantıksal birim olarak çalıştırmak için kullanılan bir kavramdır. İşlemler, veritabanında tutarlılığı ve veri bütünlüğünü sağlamak için önemlidir. Transaction kullanırken, tüm sorgular başarılı bir şekilde çalışırsa veriler kalıcı hale getirilir, aksi takdirde değişiklikler geri alınır (rollback).
PDO Transaction Kullanımı ve Rollback Örneği:
Aşağıda, PDO kullanarak bir transaction oluşturmayı ve işlemleri geri almayı gösteren bir örnek:
<?php try { // PDO veritabanı bağlantısını oluştur $db = new PDO("mysql:host=localhost;dbname=veritabani", "kullanici_adi", "sifre"); // Hata raporlamayı etkinleştir $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Transaction başlat $db->beginTransaction(); // İşlem 1: Veritabanına yeni bir kayıt ekleme $stmt1 = $db->prepare("INSERT INTO tablo (alan1, alan2) VALUES (:deger1, :deger2)"); $stmt1->bindParam(':deger1', $deger1); $stmt1->bindParam(':deger2', $deger2); $deger1 = "değer1"; $deger2 = "değer2"; $stmt1->execute(); // İşlem 2: Varolan bir kaydı güncelleme $stmt2 = $db->prepare("UPDATE tablo SET alan1 = :yeniDeger WHERE sart = :sart"); $stmt2->bindParam(':yeniDeger', $yeniDeger); $stmt2->bindParam(':sart', $sart); $yeniDeger = "yeni değer"; $sart = "belirli bir şart"; $stmt2->execute(); // Tüm işlemler başarılı, veritabanındaki değişiklikleri kalıcı hale getir $db->commit(); echo "İşlemler başarıyla tamamlandı!"; } catch (PDOException $e) { // Hata durumunda işlemleri geri al $db->rollBack(); echo "Hata: " . $e->getMessage(); }
Yukarıdaki örnekte, $db->beginTransaction()
ile transaction başlatılır. Ardından, istediğimiz kadar işlemi gerçekleştiririz. Tüm işlemler başarılı olursa, $db->commit()
ile veriler kalıcı hale getirilir. Ancak, bir hata meydana gelirse, $db->rollBack()
ile tüm işlemler geri alınır ve veritabanı eski durumuna döner.
PDO ile transaction kullanmak, veritabanı işlemlerini güvende tutmak için önemli bir adımdır. Beklenmedik hatalar veya istisnai durumlar ortaya çıktığında, işlemleri geri almak, veri bütünlüğünü korumak için vazgeçilmezdir. Örnek kodlarımızı kullanarak, PHP projelerinizde PDO transaction ve rollback kullanarak daha güvenilir ve tutarlı bir veritabanı yönetimi sağlayabilirsiniz.
Bu ve benzeri önemli ipuçlarını öğrenmek için diğer yazılarıma da göz atabilirsiniz.