En basit şekli ile yani tek html sayfası ile mysql veri tabanına kayıt ekleme formunu ve eklenen kayıtların listelendiği html çıktısını aşağıda görebilirsiniz.
Aşağıdaki tabloyu oluşturduğunuzu düşünerek mysql insert into komutunu php ile yapabilmek için pdo sınıfını kullanma işlemine bağlıyoruz. Tabloyu oluşturmadıysanız.
PhpMyAdmin ile veritabanı oluşturma makalesini okuyabilirsiniz.
Tabloyu oluşturduktan sonra ornek bir php sayfası açarak(kayit.php) mysql veritabanı bağlantı kodunu sayfanın başına ekliyoruz. Mysql veritabanı bağlantısında sorun yaşarsanız. PDO ile veritabanı makalesine göz atabilrisiniz.
Utf-8 dil desteği ve hata yakalama(try catch) ile birlikte örneğimize ait veritabanı kodlarımızı sayfanın başına (doctype bildiriminden önce)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php try { $db_ad='kutuphane'; $db_kullanici='root'; $db_sifre=''; $db = new PDO('mysql:host=localhost;charset=UTF8;dbname='.$db_ad, $db_kullanici, $db_sifre); } catch (PDOException $e) { print "Bağantı Hatası!: " . $e->getMessage() . "<br/>"; die(); } ?> |
Veritabanına kaydetme işlemini gerçekleştirmek için gerekli olan form etiketlerini yapızıyoruz.
action kısmında $_SERVER[‘PHP_SELF’] super global değişkeni bulunduğumuz sayfanın url adresini tutmaktadır. Bu kodu yazarak sayfanın kendi içinde yönlenmesini sağlıyoruz. metod olarak post yönetmini kullandığımızı bilmemiz gerekiyor. Gönderilen verileri çekerken $_POST ile okuyacağız anlamına geliyor.
$_POST süper global dizisi içindeki index isimleri de name attribute değeri içinde yazılan ad, soyad ve kaydet değerleridir.
1 2 3 4 5 6 7 |
<form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <input type="text" name="ad" placeholder="Yazar adını giriniz"><br> <input type="text" name="soyad" placeholder="Yazar soyadını giriniz"><br> <input type="submit" name="kaydet"> </form> |
Form gönderme işlemi gerçekleştiren kodu body etiketleri arasına yazdıktan sonra tekrar sayfanın üst kısmına gelerek (veritabanı bağlantısından sonraki kısma). Form nesnesi post edilip edilmediğin öğrenmek için isset() metodu ile kaydet değerinin gelip gelmediğini kontrol ediyoruz. isset($_POST[‘kaydet’]) değeri varsa true sonucunu döndürecek ve şart içindeki kayıt ekleme(insert ) işlemini gerçekleştirecektir.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php if(isset($_POST['kaydet'])) { $formliste=[$_POST['ad'],$_POST['soyad']]; $sorgu=$db->prepare("insert into yazar values(NULL,?,?)"); $sorgu->execute($formliste); } ?> |
$_POST[‘ad’] form içindeki name değeri ad olan input nesnesini,
$_POST[‘soyad’] form içindeki name değeri soyad olan input nesnesini ifade etmektedir.
bu değişkenleri bir ileride kullanmak için $formliste dizisi içini alıyoruz.
1 2 3 |
$sorgu=$db- >;prepare("insert into yazar values(NULL,?,?)"); |
prepare metodu ile kayıt ekleme sorgumuzu hazırlıyoruz. Soru işaretleri ile execute() metoduna gönderilecek olan dizi parametreleri(ad,soyad) değerleri sırasıyla gelecektir. Hazırlanan sorguyu çalıştırılmak üzere $sorgu adında bir değişkene gönderip(PDOqlstatment) türünde bir nesne oluşturumuş oluyoruz.
1 2 3 |
$sorgu- >execute($formliste); |
execute(dizi) şekilde çalıştırılan PDOstatement metodu hazırlanan sorgudaki soru işaretleri ile belirtilen yerlere dizideki değerleri sırası ile gönderip sorguyu çalıştırıyor.
Eğer sorgu sonucunda işlem yapılmışmı kontrol etmek istiyorsak dönen değeri bir değişkende tutup kontrol edebiliriz.
Aynı sayfa içinde eklediğimiz kayıtları da görmek istiyorsak body etiketleri içinde aşağıdaki php kodları ile veritabanından sorgulama yapabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php foreach($db->query('SELECT * from yazar') as $satir) { echo $satir["ad"]; echo "---"; echo $satir["soyad"]; echo "<br>"; } ?> |
Yazdığımız kodları tek sayfada toparlayacak olursak aşağıdaki şekilde bir sayfa oluşturmuş olacağız.
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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?php try { $db_ad='kutuphane'; $db_kullanici='root'; $db_sifre=''; $db = new PDO('mysql:host=localhost;charset=UTF8;dbname='.$db_ad, $db_kullanici, $db_sifre); } catch (PDOException $e) { print "Bağantı Hatası!: " . $e->getMessage() . "<br/>"; die(); } if(isset($_POST['kaydet'])) { $formliste=[$_POST['ad'],$_POST['soyad']]; $sorgu=$db->prepare("insert into yazar values(NULL,?,?)"); $sorgu->execute($formliste); } ?> <!doctype html> <html> <head> <meta charset="utf-8"/> <title>Veri Tabanı İşlemleri</title> </head> <body> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <input type="text" name="ad" placeholder="Yazar adını giriniz"><br> <input type="text" name="soyad" placeholder="Yazar soyadını giriniz"><br> <input type="submit" name="kaydet"> </form> <hr> <?php foreach($db->query('SELECT * from yazar') as $satir) { echo $satir["ad"]; echo "---"; echo $satir["soyad"]; echo "<br>"; } ?> </body> </html> |
Basit bir php örneği ile mysql insert into kavramına değinmiş olduk.