Bir veritabanı kaydını güncellerken en kritik nokta, hangi kaydın değiştirileceğini belirleyen WHERE koşuludur. PDO ile bu işlemi yaparken verileri doğrudan sorgunun içine yazmak yerine, dışarıdan gelen müdahaleleri engellemek için parametreleme yöntemini kullanırız.
Aşağıdaki örnekte, bir kullanicilar tablosundaki verinin nasıl güncelleneceği adım adım gösterilmiştir:
PHP
<?php
// Veritabanı bağlantı dosyanızı dahil edin
require_once 'db_baglanti.php';
try {
// 1. SQL Sorgusunu hazırlayın (Parametreler için :isaretleyici kullanın)
$sql = "UPDATE kullanicilar SET ad = :yeni_ad, eposta = :yeni_eposta WHERE id = :id";
$sorgu = $pdo->prepare($sql);
// 2. Güncellenecek veriler
$ad = "Ahmet Yılmaz";
$eposta = "ahmet@ornek.com";
$id = 5;
// 3. Verileri bağlayın ve sorguyu çalıştırın
$sonuc = $sorgu->execute([
'yeni_ad' => $ad,
'yeni_eposta' => $eposta,
'id' => $id
]);
// 4. İşlem kontrolü
if ($sonuc) {
//rowCount() etkilenen satır sayısını döndürür
echo $sorgu->rowCount() . " kayıt başarıyla güncellendi.";
}
} catch (PDOException $e) {
die("Hata oluştu: " . $e->getMessage());
}
?>
Yukarıdaki örnekte göreceğiniz :id veya :yeni_ad gibi ifadeler birer yer tutucudur. Kullanıcıdan gelen veriler doğrudan SQL cümlesine eklenmez; bunun yerine execute() metodu ile güvenli bir şekilde iletilir. Bu, web uygulamalarındaki en büyük açık olan SQL Injection'ı engeller.
Bir UPDATE sorgusu çalıştırıldığında, sorgu teknik olarak başarılı olsa bile hiçbir satır değişmemiş olabilir (örneğin id bulunamadıysa veya yeni veri eski veriyle aynıysa). rowCount() metodu, veritabanında gerçekten kaç satırın içeriğinin değiştiğini size söyler.
Eğer verileri bir dizi içinde göndermek yerine daha spesifik veri tipleriyle (integer, string vb.) bağlamak isterseniz bindParam kullanabilirsiniz:
PHP
$sorgu->bindParam(':id', $id, PDO::PARAM_INT);
$sorgu->bindParam(':yeni_ad', $ad, PDO::PARAM_STR);
$sorgu->execute();
Prepare: Sorgu taslağını veritabanına gönderin.
Bind: Değişkenleri bu taslakla eşleştirin.
Execute: Sorguyu güvenli bir şekilde çalıştırın.
Check: Kaç satırın güncellendiğini doğrulayın.
PDO ile güncelleme işlemi, verilerinizin bütünlüğünü korurken kodunuzun okunabilirliğini ve taşınabilirliğini artırır.