CRUD İşlemleri 3: Veri Güncelleme ve Düzenleme (Update)

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Veri güncelleme işlemi, veritabanındaki mevcut bir kaydın üzerine yeni bilgilerin yazılmasıdır. Bu işlemde en kritik nokta WHERE ifadesidir. Eğer bir güncelleme sorgusunda hangi satırın güncelleneceğini belirtmezseniz, tüm tablodaki verileri istemeden değiştirebilirsiniz. 2026 yılı itibarıyla, profesyonel projelerde "Atomic Update" (sadece değişen alanı güncelleme) ve "Prepared Statements" kullanımı standarttır.

1. Temel Güncelleme Mantığı​


Bir kaydı güncellemek için UPDATE komutunu, hangi sütunun değişeceğini (SET) ve hangi kaydın değişeceğini (WHERE) belirtmemiz gerekir.

PHP:
<?php
require_once 'Database.php';

try {
$db = Database::getInstance()->getConnection();

// Güncellenecek veriler
$yeniEposta = &quot;[email protected]&quot;;
$uyeId = 5;

// Sorguyu hazırlayalım
$sql = &quot;UPDATE uyeler SET eposta = :eposta WHERE id = :id&quot;;
$sorgu = $db-&gt;prepare($sql);

// Sorguyu çalıştıralım
$sonuc = $sorgu-&gt;execute([
    &#39;eposta&#39; =&gt; $yeniEposta,
    &#39;id&#39;     =&gt; $uyeId
]);

if ($sonuc) {
    // rowCount() kaç satırın etkilendiğini döndürür
    echo $sorgu-&gt;rowCount() . &quot; kayıt başarıyla güncellendi.&quot;;
}

} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>

2. Birden Fazla Sütunu Aynı Anda Güncelleme​


Kullanıcı profilini düzenlerken genellikle birden fazla alan (şifre, biyografi, konum vb.) aynı anda değişir.

PHP:
$veriler = [
'ad'    => 'Ahmet Yılmaz',
'konum' => 'İstanbul',
'id'    => 10
];

$sql = "UPDATE uyeler SET kullanici_adi = :ad, sehir = :konum WHERE id = :id";
$stmt = $db->prepare($sql);
$stmt->execute($veriler);

3. Sayısal Değerleri Artırma (Örn: Mesaj Sayısı)​


Bir forumda kullanıcının mesaj sayısını veya bir konunun görüntülenme sayısını artırmak için mevcut değere ekleme yapabiliriz.

PHP:
// Mesaj sayısını 1 artırır
$sql = "UPDATE uyeler SET mesaj_sayisi = mesaj_sayisi + 1 WHERE id = ?";
$db->prepare($sql)->execute([$uyeId]);

Güncelleme İşleminde Güvenlik Kontrol Listesi​


Kontrol NoktasıAçıklamaÖnem Derecesi
WHERE ŞartıSorgunun kapsamını belirler. Unutulursa tüm tablo güncellenir.Kritik
Data ValidationGelen verinin tipini (int, string) kontrol edin.Yüksek
rowCount()İşlemin gerçekten bir satırı değiştirip değiştirmediğini denetler.Orta
TransactionBirden fazla tabloyu güncellerken hata olursa işlemi geri alır.Yüksek

4. Dikkat: Etkilenen Satır Sayısı (rowCount)​


Güncelleme sorgusu başarılı bir şekilde çalışsa bile bazen satır değişmeyebilir. Örneğin, veritabanındaki e-posta adresi ile sizin gönderdiğiniz yeni e-posta adresi aynıysa, PDO sorguyu çalıştırır ancak rowCount() değeri 0 döner. Bu bir hata değil, verinin zaten aynı olduğu anlamına gelir.

Sonuç​


Veri güncelleme, veritabanı yönetiminin en hassas işlemlerinden biridir. Her zaman WHERE şartınızı kontrol edin ve kullanıcıdan gelen veriyi asla doğrudan sorgunun içine yerleştirmeyin. PDO'nun hazırlanmış ifadeleri sayesinde hem hızlı hem de güvenli güncellemeler yapabilirsiniz.
 
Geri
Üst