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.
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.
Kullanıcı profilini düzenlerken genellikle birden fazla alan (şifre, biyografi, konum vb.) aynı anda değişir.
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.
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.
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.
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 = "[email protected]";
$uyeId = 5;
// Sorguyu hazırlayalım
$sql = "UPDATE uyeler SET eposta = :eposta WHERE id = :id";
$sorgu = $db->prepare($sql);
// Sorguyu çalıştıralım
$sonuc = $sorgu->execute([
'eposta' => $yeniEposta,
'id' => $uyeId
]);
if ($sonuc) {
// rowCount() kaç satırın etkilendiğini döndürür
echo $sorgu->rowCount() . " kayıt başarıyla güncellendi.";
}
} 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 Validation | Gelen verinin tipini (int, string) kontrol edin. | Yüksek |
| rowCount() | İşlemin gerçekten bir satırı değiştirip değiştirmediğini denetler. | Orta |
| Transaction | Birden 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.