Php pdo ile mysql veri ekleme işlemi(insert)


Merhaba, önceki konularımızda mysql veritabanını nasıl oluşturacağımızı görmüştük.

Php diliyle pdo kullanarak nasıl veritabanına nasıl bağlanacağımızdan da bahsetmiştik.

Veritabanı oluşturma ve bağlantı işlemini gördüğümüze göre artık temel veritabanı işlemlerinden olan veri ekleme kısmına geçebiliriz.


MYSQL INSERT KOMUTU


İlk olarak sql insert işleminin nasıl yapılacağından kısaca bahsedelim ardından örneklerle konuyu pekiştireceğiz.
Sql ile veritabanına veri eklemek için insert komutunu kullanıyoruz.
Insert kullanımı


INSERT tabloAdi(sutun1,sutun2) values("deger1","deger2")

Şeklinde oluyor.

Burada insert'ten sonra tablonun adını ve parantezlerin içine de veri eklemek istediğimiz sütunları yazıyoruz.
Unutmayın veri gönderirken parantezlerin içine yazdığımız sütunlarla aynı sırayla göndereceğiz.

Bunu daha iyi anlamak için MySql üzerinden bir örnek gerçekleştirelim:

Benim sunucumda ornekDb adında bir veritabanı bulunuyor. Tablomun içinde uyeler adında bir tablom var tablomun yapısı bu şekilde:



mysql insert



Sorgu yazmak için mySql sunucusunda veritabanına tıkladıktan sonra sql kısmına tıklayıp komut yazma alanını açıyorum:


mysql insert
Sorgumuzu bu kısımda yazacağız. Yukarıda tablonun sütunlarını görmüştük.
Bu sütünları tablo adının yanına yazıyoruz.

Ardından values kısmına göndermek istediğimiz verileri sırasıyla yazıyoruz.
mysql insert


Tablomda dikkat ettiyseniz ID alanı bulunuyordu ama bu alan herhangi bir değer göndermedim. Nedeni ID alanını otomatik artan şekilde belirtmiş olmamdı.

Eğer otomatik artan bir şekilde oluşturmamış olsaydık o alana da veri gönderebilirdik.


PHP INSERT SORGUSU

Buraya kadar sql insert komutunun sunucu üzerinden nasıl çalıştırıldığını gördük.
Php ile yapacağımız ise pdo kullanarak bu işlemi gerçekleştirmek olacak.

Php ile insert işlemini yapmak için ilk olarak gerekenler veritabanı bağlantı nesnesi oluşturmak 
Hemen bir örnekle bunu gerçekleştirelim.
Veritabanı nesnemizin adı $db olsun.
$db nesnesini kullanarak bir sorgu oluşturmak için prepare kullanacağız.

ilk olarak bir değişken oluşturalım ve sorguyu yazalım.



$veriEkle = $db->prepare("INSERT uyeler(NAME,USERNAME,PASSWORD) values('NAMIK','NAM30','12356') ");

Bu şekilde sorgumuzu oluşturmuş olduk.

Ee tabi bu kadarla bitmiyor. Nasıl veritabanında sorguyu yazdıktan sonra çalıştırmak için işlem yapıyorsak pdo ile de bu şekilde çalıştırıyoruz:


$veriEkle -> execute();

Sorguyu çalıştırdıktan sonra veritabanını kontrol ederek sonucunu görebilirsiniz.
Tabi her seferinde manuel olarak gidip veritabanına bakmak çok mantıksız olurdu.
Bunun için php ile kontrol sağlayabiliriz.

Sorguyu yukarıda $veriEkle->execute(); şeklinde çalıştırmıştık.

Bunu kontrol etmek için ise sorguyu çalıştırken bir değişkene atayacağız.



$eklendiMi = $veriEkle->execute();


Şeklinde bir değişkene atayarak çalıştırırsak sorgunun başarılı olma durumunda true hatalı olma durumunda false döner.

Kontrol etmek için bir if yapısı kullanabiliriz.


if($eklendiMi)
{
echo  "veri eklendi";
}
else
{
echo  "veri eklenemedi";
}

Insert işlemi bu şekilde gerçekleşiyor.

Şimdi ise oluşturduğumuz bir forma girilen verileri veritabanına kaydetme işlemi için basit bir örnek yapalım.

İlk olarak  gelen verileri yakalamak için değişkenleri kullanacağız.
Mesela bir formdan GET veya POST ile veri gelsin:

form.php:


<html>
<head>
 <title></title>
 <style type="text/css">
  div
  {
   position: absolute;
  }
 </style>
</head>
<body>
 <h1>KAYIT OL</h1>
 <div>
  <form action="kaydet.php" method="GET">
   <p align="right"><span>AD:</span><input type="text" name="ad"></p>
   <p align="right"><span>KULLANICI ADI:</span><input type="text" name="kadi"></p>
   <p align="right"><span>ŞİFRE</span><input type="password" name="sifre"></p>
   <p align="center"><button>KAYIT OL</button></p>
  </form>
 </div>
</body>
</html>





Formun çıktısı bu şekilde :


php pdo ile mysql insert

Formden gelen verileri GET ile yakalayıp değişkenlerime atıyorum.
Ve ardından veri ekleme işlemini gerçekleştiriyorum:



<?php

try {

    $db=new PDO("mysql:host=localhost;dbname=ornekdb;charset=utf8",'root','147258369');

   // echo "bağlantı var <br>";

} catch (Exception $e) {

    echo $e->getMessage();

}

$AD    =  $_GET['ad'];

$KULLANICIADI = $_GET['kadi'];

$SIFRE   = $_GET['sifre'];

$veriEkle  = $db->prepare("INSERT uyeler(NAME,USERNAME,PASSWORD) values(?,?,?)");

$sonuc   = $veriEkle->execute(array($AD,$KULLANICIADI,$SIFRE));

if($sonuc)

{

 echo "kayıt başarılı";

}

else

{

 echo "bir sorun oluştu";

 print $veriEkle->errorCode();

}
$db=null;
?>

Yukarıdaki kodları incelediğinizde sorgunun içinde soru işaretlerini göreceksiniz.
Soru işareti yazmamızın sebebi değişken gönderecek olmamız.
 Execute() içerisinde değişkenleri bir dizi olarak gönderiyoruz.
Ardından if yapısı ile işlemin başarı ile mi sonuçlandığını kontrol ediyorum.

Ayrıca veri tabanını bağlantısını kontrol etmek için try bloklarının içine echo "bağlantı var";
kodunu ekledik.

if kısmında ise else içinde yazmış olduğum print $veriekle->errorCode(); komutu herhangi bir hata oluştuğunda hata kodunu döndürüyor.

Böylece insert işlemini gerçekleştirmiş olduk. form kısmında daha fazla bilgi sahibi olmak için Buradaki konumuza bakabilirsiniz.

Not:Yukarıda yazmış olduğum kodlarda sql ile ilgili güvenlik önlemleri alınmamıştır.Bunun için gelecekte konu paylaşılacaktır.
Blogger tarafından desteklenmektedir.