irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Veritabanına veri eklemek, sadece bir SQL komutu çalıştırmak değildir. Kullanıcıdan gelen veriyi temizlemek, güvenliği sağlamak ve işlemin sonucuna göre kullanıcıyı bilgilendirmek bu sürecin ayrılmaz parçalarıdır. 2026 standartlarında, veritabanına doğrudan değişken göndermek (SQL Injection riski nedeniyle) tamamen terk edilmiştir.
Bu rehberde kullanacağımız basit bir üyeler tablosu yapısı şu şekildedir:
Veri eklerken en güvenli yöntem Prepared Statements (Hazırlanmış İfadeler) kullanmaktır. Bu yöntem, SQL komutu ile veriyi birbirinden ayırarak kötü niyetli kişilerin veritabanınıza sızmasını engeller.
Bir HTML formundan gelen veriyi eklerken mutlaka empty() kontrolü ve filtreleme yapmalısınız:
Veritabanına kayıt ekleme, uygulamanızın veri toplama aşamasıdır. Bu rehberdeki PDO + Prepared Statements yöntemini kullanarak hem güvenli hem de profesyonel bir başlangıç yaptınız. Unutmayın; temiz veri, temiz bir veritabanı ve güvenli bir gelecek demektir.
1. Hazırlık: Örnek Veritabanı Tablosu
Bu rehberde kullanacağımız basit bir üyeler tablosu yapısı şu şekildedir:
SQL:
CREATE TABLE uyeler (
id INT AUTO_INCREMENT PRIMARY KEY,
kullanici_adi VARCHAR(50) NOT NULL,
eposta VARCHAR(100) NOT NULL,
kayit_tarihi TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Güvenli Kayıt Ekleme (INSERT)
Veri eklerken en güvenli yöntem Prepared Statements (Hazırlanmış İfadeler) kullanmaktır. Bu yöntem, SQL komutu ile veriyi birbirinden ayırarak kötü niyetli kişilerin veritabanınıza sızmasını engeller.
PHP:
<?php
// Daha önce oluşturduğumuz Database sınıfını dahil ediyoruz
require_once 'Database.php';
try {
$db = Database::getInstance()->getConnection();
// 1. Adım: Kullanıcıdan gelen veriler (Örn: Bir formdan gelen $_POST verisi)
$kadi = "YazilimciDostu";
$mail = "[email protected]";
// 2. Adım: SQL sorgusunu hazırla (Değerler yerine :etiket kullanıyoruz)
$sql = "INSERT INTO uyeler (kullanici_adi, eposta) VALUES (:kadi, :mail)";
$sorgu = $db->prepare($sql);
// 3. Adım: Verileri etiketlerle eşleştir ve çalıştır
$sonuc = $sorgu->execute([
'kadi' => $kadi,
'mail' => $mail
]);
if ($sonuc) {
$son_id = $db->lastInsertId();
echo "Kayıt başarıyla eklendi! Üye ID: " . $son_id;
}
} catch (PDOException $e) {
echo "Hata Oluştu: " . $e->getMessage();
}
?>
3. Neden Execute İçinde Dizi (Array) Kullanmalıyız?
[] Okunabilirlik: Hangi verinin hangi sütuna gittiğini açıkça görürsünüz.
[] Otomatik Filtreleme: PDO, dizi içindeki verileri otomatik olarak tırnak içine alır ve zararlı karakterleri etkisiz hale getirir.- Çoklu Ekleme: Aynı sorguyu farklı dizilerle defalarca çalıştırarak performans kazanırsınız.
4. Form Verilerini İşlemek (Gerçek Dünya Senaryosu)
Bir HTML formundan gelen veriyi eklerken mutlaka empty() kontrolü ve filtreleme yapmalısınız:
PHP:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
kadi=trim(_POST['username']);
mail=filtervar(_POST['email'], FILTER_SANITIZE_EMAIL);
if (!empty($kadi) && filter_var($mail, FILTER_VALIDATE_EMAIL)) {
// INSERT işlemi buraya gelecek
$stmt = $db->prepare("INSERT INTO uyeler (kullanici_adi, eposta) VALUES (?, ?)");
$stmt->execute([$kadi, $mail]);
echo "Kayıt tamamlandı.";
} else {
echo "Lütfen geçerli bilgiler girin.";
}
}
Başarılı Bir Insert İşleminin Adımları
| Aşama | İşlem | Neden Önemli? |
|---|---|---|
| 1. Doğrulama | Verinin boş olup olmadığını kontrol et. | Hatalı/Eksik kayıtları önler. |
| 2. Filtreleme | HTML etiketlerini temizle (strip_tags). | XSS saldırılarını engeller. |
| 3. Hazırlama | PDO prepare() fonksiyonunu kullan. | SQL Injection'ı imkansız kılar. |
| 4. Geri Bildirim | lastInsertId() ile kullanıcıya bilgi ver. | Kullanıcı deneyimini (UX) iyileştirir. |
Sonuç
Veritabanına kayıt ekleme, uygulamanızın veri toplama aşamasıdır. Bu rehberdeki PDO + Prepared Statements yöntemini kullanarak hem güvenli hem de profesyonel bir başlangıç yaptınız. Unutmayın; temiz veri, temiz bir veritabanı ve güvenli bir gelecek demektir.