irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Veri silme işlemi, bir kaydın fiziksel olarak veritabanından kaldırılmasıdır. Bu işlemde hata payı yoktur; silinen veri (yedek yoksa) geri getirilemez. 2026 standartlarında bir geliştirici olarak, doğrudan "Hard Delete" (kalıcı silme) yerine genellikle veriyi sadece gizleyen "Soft Delete" yöntemini tercih etmelisiniz.
Bu yöntem, veriyi tablodan tamamen temizler. WHERE şartı kullanılması hayati önem taşır.
Büyük projelerde (XenForo dahil) veriler nadiren gerçekten silinir. Bunun yerine tabloda is_deleted veya deleted_at gibi bir sütun tutulur. Veri silinmek istendiğinde bu sütun güncellenir.
Avantajı: Yanlışlıkla silinen veriyi tek bir komutla geri getirebilirsiniz (Undo).
Bir silme butonuna tıklandığında işlemin anında gerçekleşmesi kötü bir kullanıcı deneyimidir. JavaScript ile bir onay mekanizması kurmak şarttır.
Bir üyeyi sildiğinizde, o üyeye ait 500 tane mesaj ne olacak?
CRUD döngüsünü tamamladık! Silme işlemi, sahip olduğunuz en keskin araçtır. Bu aracı kullanırken her zaman WHERE şartını iki kez kontrol edin, mümkünse "Soft Delete" mimarisini benimseyin ve kullanıcılarınıza mutlaka bir "Emin misiniz?" sorusu yöneltin.
1. Kalıcı Silme (Hard Delete)
Bu yöntem, veriyi tablodan tamamen temizler. WHERE şartı kullanılması hayati önem taşır.
PHP:
<?php
require_once 'Database.php';
try {
$db = Database::getInstance()->getConnection();
$silinecekId = 12;
// Sorguyu hazırla
$sql = "DELETE FROM uyeler WHERE id = :id";
$sorgu = $db->prepare($sql);
// Çalıştır
$sorgu->execute(['id' => $silinecekId]);
if ($sorgu->rowCount() > 0) {
echo "Kayıt başarıyla kalıcı olarak silindi.";
} else {
echo "Silinecek kayıt bulunamadı.";
}
} catch (PDOException $e) {
echo "Hata: " . $e->getMessage();
}
?>
2. Güvenli Silme (Soft Delete) - Profesyonel Yöntem
Büyük projelerde (XenForo dahil) veriler nadiren gerçekten silinir. Bunun yerine tabloda is_deleted veya deleted_at gibi bir sütun tutulur. Veri silinmek istendiğinde bu sütun güncellenir.
Avantajı: Yanlışlıkla silinen veriyi tek bir komutla geri getirebilirsiniz (Undo).
PHP:
// Silme işlemi yerine GÜNCELLEME yapıyoruz
$sql = "UPDATE uyeler SET is_deleted = 1, deleted_at = NOW() WHERE id = :id";
$db->prepare($sql)->execute(['id' => $id]);
// Verileri çekerken sadece silinmemiş olanları çağırıyoruz
$sqlSelect = "SELECT * FROM uyeler WHERE is_deleted = 0";
3. Kullanıcıdan Silme Onayı Alma (Frontend)
Bir silme butonuna tıklandığında işlemin anında gerçekleşmesi kötü bir kullanıcı deneyimidir. JavaScript ile bir onay mekanizması kurmak şarttır.
HTML:
<a href="sil.php?id=12" onclick="return confirm('Bu kaydı silmek istediğinize emin misiniz? Bu işlem geri alınamaz!');">
Kaydı Sil
</a>
Silme İşlemi Güvenlik Tablosu
| Yöntem | Riziko | Kullanım Yeri |
|---|---|---|
| Hard Delete | Çok Yüksek | Geçici tablolar, log dosyaları, önemsiz veriler. |
| Soft Delete | Düşük | Kullanıcılar, konular, siparişler, mesajlar. |
| Cascade Delete | Orta | İlişkili veritabanlarında otomatik temizlik. |
4. İlişkili Verileri Yönetme (Foreign Keys)
Bir üyeyi sildiğinizde, o üyeye ait 500 tane mesaj ne olacak?
[] ON DELETE CASCADE: Üye silindiğinde mesajları da otomatik silinir.
[] ON DELETE SET NULL: Üye silinir, mesajların sahibi "Misafir" veya "Silinmiş Üye" olarak güncellenir.
Sonuç
CRUD döngüsünü tamamladık! Silme işlemi, sahip olduğunuz en keskin araçtır. Bu aracı kullanırken her zaman WHERE şartını iki kez kontrol edin, mümkünse "Soft Delete" mimarisini benimseyin ve kullanıcılarınıza mutlaka bir "Emin misiniz?" sorusu yöneltin.