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

Veritabanı Odaklı N-Tier Mimariden Hexagonal Mimariye 3 Aşamalı Geçiş: Core Domain İzolasyonu
14 Haziran 2026

Veritabanı Odaklı N-Tier Mimariden Hexagonal Mimariye 3 Aşamalı Geçiş: Core Domain İzolasyonu

Veritabanı bağımlı N-Tier mimariden Hexagonal’e geçişte Core Domain izolasyonunu sıfır kesintiyle nasıl yaparsınız? P99 gecikme metrikleri, riskler ve 3 aşamalı migration rehberi.

Devamını Oku
PostgreSQL İndeks Şişmesini Yönetme: Sensör Verileri İçin HOT ve Fillfactor Rehberi
29 Mart 2026

PostgreSQL İndeks Şişmesini Yönetme: Sensör Verileri İçin HOT ve Fillfactor Rehberi

Yüksek hacimli sensör verilerinde PostgreSQL performansını artırmak için indeks şişmesini önleyin. HOT updates ve fillfactor parametreleriyle disk I/O darboğazlarını nasıl aşacağınızı öğrenin.

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
AI Asistan