PHP PDO İle Veritabanına Veri Ekleme

PHP

Bu dersimizde PHP ile PDO kullanarak veritabanına veri eklemeyi öğreneceğiz.

PDO ile veritabanına veri ekleme işleminde exec, query ve prepare metodları kullanılıyor.

Veritabanına veri ekleme işlemi genelde dışarıdan alınan bilgilerin veritabanına kayıt edilmesi ile oluyor.

Veritabanına veri ekleme ve kaydetme esnasında kullanıcının yanlış veya hatalı veri girmesi istenmeyen durumların ortaya çıkmasına neden olabilir.

Veri Formunun Hazırlanması

Verilerin düzgün olarak girilmesi sağlamak için HTML5‘in özelliklerini kullanmak faydalı olacaktır.

1
2
3
4
5
6
7
8
9
<form action="" method="post">
    Ad:<br />
    <input type="text" name="ad" required="required" /><br />
    Soyad:<br />
    <input type="text" name="soyad" required="required" /><br />
    E-posta Adresi:<br />
    <input type="email" name="eposta" required="required" />
    <input type="submit" value="Kaydet" />
</form>

Veri ekleme işleminde gerekli olan görselliği yukarıdaki form ile oluşturduktan sonra PHP ile gönderilen verilerin kontrol edilmesi ve filtrelenmesi çok önemli.

Filtre ve Kontrollerin Yapılması

PHP form kontrolü ve verilerin filtrelenmesi aşağıdaki gibi yapılır.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
 
if (isset($_POST['ad'], $_POST['soyad'], $_POST['eposta'])) {
 
    $ad = trim(filter_input(INPUT_POST, 'ad', FILTER_SANITIZE_STRING));
    $soyad = trim(filter_input(INPUT_POST, 'soyad', FILTER_SANITIZE_STRING));
    $eposta = trim(filter_input(INPUT_POST, 'eposta', FILTER_SANITIZE_EMAIL));
 
    if (empty($ad) || empty($soyad) || empty($eposta)) {
        die("<p>Lütfen tüm alanları eksiksiz doldurunuz.</p>");
    }
 
    if (!filter_var($eposta, FILTER_VALIDATE_EMAIL)) {
        die("<p>Lütfen geçerli bir e-posta adresi giriniz.</p>");
    }
 
    echo "PHP PDO veritabanına veri ekleme";
}
 
?>

Gerekli kontrol ve filtrelemenin ardından veritabanı bağlantısı ve ön hazırlıklı sorgu (prepare) işlemini yapabiliriz.

Verilerin Kaydedilmesi

PDO ile veri ekleme kodları aşağıda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
if (isset($_POST['ad'], $_POST['soyad'], $_POST['eposta'])) {
 
    $ad = trim(filter_input(INPUT_POST, 'ad', FILTER_SANITIZE_STRING));
    $soyad = trim(filter_input(INPUT_POST, 'soyad', FILTER_SANITIZE_STRING));
    $eposta = trim(filter_input(INPUT_POST, 'eposta', FILTER_SANITIZE_EMAIL));
 
    if (empty($ad) || empty($soyad) || empty($eposta)) {
        die("<p>Lütfen tüm alanları eksiksiz doldurunuz.</p>");
    }
 
    if (!filter_var($eposta, FILTER_VALIDATE_EMAIL)) {
        die("<p>Lütfen geçerli bir e-posta adresi giriniz.</p>");
    }
 
    try {
 
        $baglanti = new PDO("mysql:host=localhost;dbname=dbadi", "dbkullaniciadi", "dbsifre");
        $baglanti->exec("SET NAMES utf8");
        $baglanti->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
        $sorgu = $baglanti->prepare("INSERT INTO kisiler(kisi_ad, kisi_soyad, kisi_eposta) VALUES(?, ?, ?)");
        $sorgu->bindParam(1, $ad, PDO::PARAM_STR);
        $sorgu->bindParam(2, $soyad, PDO::PARAM_STR);
        $sorgu->bindParam(3, $eposta, PDO::PARAM_STR);
 
        $sorgu->execute();
 
        echo "<p>Girilen bilgiler veritabanına kaydedildi.</p>";
 
    } catch (PDOException $e) {
        die($e->getMessage());
    }
 
    $baglanti = null;
}
 
?>