PHP PDO Transaction Rollback Kullanımı: Veritabanı İşlemlerini Güvende Tutma
Blog'a Dön

PHP PDO Transaction Rollback Kullanımı: Veritabanı İşlemlerini Güvende Tutma

Buğra Şıkel

PHP PDO Transaction ve Rollback Kullanımı

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.

Web sitesine mi ihtiyacınız var ?

Bunları da beğenebilirsiniz

VictoriaMetrics&#8217;te Polimorfik İndeksleme: Yaşlanan Zaman Serisi Verilerinde Sorgu Gecikmesini Sabitleme
23 Mart 2026

VictoriaMetrics’te Polimorfik İndeksleme: Yaşlanan Zaman Serisi Verilerinde Sorgu Gecikmesini Sabitleme

VictoriaMetrics’in yaşlanan zaman serisi verileri için polimorfik indekslemeyi nasıl kullandığını keşfedin. Bu yenilikçi yaklaşım, üretim seviyesi sorgu gecikmelerini önemli ölçüde azaltarak veri erişimini optimize eder ve operasyonel verimliliği artırır.

Devamını Oku
Bir Web Siteye Sahip Olmanız İçin 10 Neden
10 Ekim 2022

Bir Web Siteye Sahip Olmanız İçin 10 Neden

Pazarda rekabet etmek istiyorsanız, çevrimiçi bir varlığa ve daha da önemlisi size uygun olarak tasarlanmış bir web sitesine sahip olmalısınız. Belki 10 yıl önce alaka…

Devamını Oku
Kullanışlı VSCode Eklenti Önerileri
3 Kasım 2022

Kullanışlı VSCode Eklenti Önerileri

Bu yazımızda kullanmış olduğum ve sizlere önerebileceğim VSCode (Visual Studio Code) eklentilerini listeleyeceğim. Genellikle PHP, MySQL, HTML, CSS, Javascript kodladığım için bu yazılım dillerinde işimize…

Devamını Oku
AI Asistan