PHP PDO Veritabanı Bağlantısı (Insert - Select- Update - Delete)


PHP Veritabanı Bağlantısı

Bildiğiniz gibi hemen hemen tüm programlarda, projelerde veri tabanlarıyla birlikte çalışılıyor. Ancak veritabanına erişim kısmı değişkenlik gösterebilir. Biz bugün PHP de nasıl bağlantı kuracağız, veritabanına ekleme (insert)-çıkarma(delete) veya güncelleme (update) gibi temel işlemleri nasıl yapacağız buna bakalım. Öncelikle yaygın olan veritabanlarından bahsedelim.

  • MySQL
  • ORACLE
  • PostgreSQL
Kelime anlamı olarak incelendiği zaman MySQL, Structured Query Language (Yapılandırılmış Sorgulama Dili) SQL teknolojisinin kullanıldığı açık kaynaklı web yazılımıdır.

Oracle , Kaliforniya kökenli bir yazılım şirketidir. 1977 yılında kurulmuştur ve bugüne kadar birçok başarıya imza atmıştır. Java programlama dilinin günümüzdeki halinin mimarıdır. 

Oracle'ı İlişkisel Veritabanı Yönetim Sistemleri olarak tanımlayabiliriz. Bu genel anlamda RDBMS olarak anılmaktadır. Açılımı Relational Database Management System'dir. 

PostgreSQL, güçlü özellikler ve avantajlara sahip, açık kaynaklı ve tamamen ücretsiz nesne ilişkisel veri tabanı sistemidir.


Biz MySql kullanarak işlemlerimizi yapacağız. Kullanacağımız araç phpMyAdmin'dir.
PhpMyAdmin, PHP ile yazılmış açık kaynak kodlu bir araçtır. Kullanım amacı İnternet üzerinden MySQL veritabanı yönetimi yapmaktır.
PhpMyAdmin'i yükledikten sonra kurulum sırasında sizden kullanıcı adı ve şifre isteyecektir. Önemli olan kısım bu kullanıcı adınızı ve şifrenizi unutmamanız. Çünkü bağlantı yaparken bu ikisi size gerekli olacaktır.

<?php 
    try {
         $db = new PDO("mysql:host=localhost;dbname=veritabani_adi", "kullanici_adi", "sifre");
    } catch ( PDOException $e ){
         print $e->getMessage();
    }
    if (!$db ) die("Bağlantı Sağlanamadı...");
 ?>
Burada try-catch yapısı kullanılıyor. try içinde hesaplanmak istenen ifade yer alır. catch  yazıldığında bir hata türü tespit edilince verilmesi gereken mesaj yazılıyor. 
Daha önce bahsettiğimiz gibi değişken tanımlarken $ işareti ile başlamalıdır. $db ile bir değişken tanımladık. new PDO dediğimizde bir sınıf oluşturduk. 
Kullanıcı adresiniz, phpMyAdmin kurarken veritabanınıza verdiğiniz isim, kullanıcı adınız ve şifreniz bilgilerini doğru olarak girmeniz gerekiyor. catch (PDOException $e) exception hata fırlatmak için kullanılan kod parçasıdır. Burada uzun uzun yazmak yerine $e değişkenine atanmıştır. print $e->getMessage() bir hata olduğunda ekrana mesaj yazdırma işlemini gerçekleştirir.
if ile eğer bu işlemler olmazsa, yani veritabanı bağlantısı kurulmadı ama hata da yok, bu durumda ne olduğunu bilmemiz gerekiyor. Bağlantı var mı yok mu bunu anlamak için if bloğu kullanılmıştır. 
Bu yazdığımız kodları baglanti.php şeklinde kaydedelim. Daha sonra bunu kullanacağız.
Bu şekilde veritabanına bağlantı kurduktan sonra artık ekleme,çıkarma,güncelleme işlemlerini yapabiliriz.

PHP Insert (Ekleme) İşlemi

Önce HTML ile sayfamızda neyin görüntülenmesini istiyorsak onları yazalım.
<?php 
    require_once("veri_ekle.php");
 ?>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <h1>Veritabanı PDO Kayıt İşlemleri</h1>
    <hr>
    <form action="/ekleme.php" method="POST">
 
    İsim <input type="text" name="ad" placeholder="Adınızı Giriniz" required>
    Soyisim <input type="text" name="soyad" placeholder="Soyadınızı Giriniz" required>
    Mail <input type="email" name="email" placeholder="Mail Giriniz" required>
    Yas <input type="text" name="yasi" required>
    <button type="submit" >Formu Gönder</button>
    
</form>
</body>
</html>
Input Nedir?
<İnput type = "text">, tek satırlık bir metin alanı tanımlar. Type kısmına ne girildiyse ona uygun bir alan tanımlar. Örneğin email girildiyse @ işaretini zorunlu kılar ve o girilmediği sürece formu göndermez.

Type çeşitleri;
  • <input type="button">
  • <input type="checkbox">
  • <input type="color">
  • <input type="date">
  • <input type="datetime-local">
  • <input type="email">
  • <input type="file">
  • <input type="hidden">
  • <input type="image">
  • <input type="month">
  • <input type="number">
  • <input type="password">
  • <input type="radio">
  • <input type="range">
  • <input type="reset">
  • <input type="search">
  • <input type="submit">
  • <input type="tel">
  • <input type="time">
  • <input type="url">
  • <input type="week">
Input'ların sonuna yazılan required bu alanı zorunlu kılar. Boş bırakmasına izin vermez.
Bu sayfaya baktığımızda göreceğimiz;


Require_once Nedir?

Herhangi bir php dosyasını diğer php dosyasına eklemek istediğimizde kullanırız.requre_once dosyasını kaç kez çağırırsak çağıralım dosyayı 1 kez getirir. require fonksiyonlarında dosya yolu bulunamaz ise fatal error verir ve çalışma durdurulur. require ettiğimiz dosyalardaki kodlar sanki o dosyaya yazmışız gibi çalışır. Bu nedenle html sayfasında hangi işlemleri yapıyorsak, örneğin ekleme işlemini yapıyorsak hangi dosyanın içinde yazdıysak bunu bu sayfada çağırmamız gerekir.

Veri Ekleme 
Önce veritabanımıza tablo oluşturmamız gerekiyor. Çünkü ekleme yapabilmemiz için bir yer açılması lazım.

 
       
Tablomuzu oluşturduk. Şimdi içini doldurmak için gereken işlemleri yapalım. veri_ekle.php adında bir dosya oluşturdum.
<?php  
require_once("baglanti.php");
if($_POST[ad] AND $_POST[soyad] AND $_POST[email] AND $_POST[yasi] ){
    $kaydet = $pdo->prepare("INSERT INTO kisiler SET
                                                ad = ?,
                                                soyad = ?,
                                                mail = ?,
                                                yas = ?
    ");
    $insert = $kaydet->execute(array(
     $_POST[ad], $_POST[soyad], $_POST[mail], $_POST[yas]
    ));
        if($insert) return 1; else return 0;
    }
?>
Biraz önce bahsettiğimiz require_once işlemini burada da kullandık. Veritabanına bağlantı yapmak için gereken kodları baglanti.php içerisinde yazmıştık. Bunu burada çağırdık ve veritabanı bağlantısı kurduk. Artık ekleme işlemlerine başlayabiliriz.
Şimdi önemli bir değişkenden bahsedelim. 

$_POST değişkeni nedir?
  • Formdaki değişkenleri almak için kullanılır.
  • Formdan gönderilen bilgiler başkalarına görünmez.
  • $ _POST, HTTP POST yöntemi ile formdan iletilen değişkenler dizisidir.
Kısaca form içine ne yazıyorsak, hangi değeri giriyorsak $_POST değişkeni bunları almamızı,yakalamamızı sağlar.

Post işlemi veri almayı sağlar. Yani kullanıcı adını soyadını girdiğinde ne yazdığının görülmesini sağlar. Post ile veri gönderildiğinde adres satırında hiçbir şey görülmez. Ancak get ile gönderildiğinde adres satırında yazar. Yani Post gizlidir ancak get değildir.


if($_POST[ad] AND $_POST[soyad] AND $_POST[email] AND $_POST[yasi] )

Burada $_POST'ların içine yazılanlar isim, soy isim, mail ve yaş ile tanımladığımız inputlara verdiğimiz isimlerdir. Diyoruz ki;

ad gelmişse, soyad gelmişse, email gelmişse ve yasi gelmişse aşağıdaki işlemleri yap. Kontrol sağlıyoruz.

 $kaydet = $pdo->prepare("INSERT INTO kisiler SET

$kaydet diye bir değişken tanımlanmış ve veritabanı bağlantısı yapılmış. prepare() fonksiyonu çalıştırılmak üzere bir SQL deyimini hazırlar. Bizim burada kullandığımız insert işlemi yani eklemedir. Diyoruz ki kisiler tablosuna ad soyad mail yas ekle.

$insert = $kaydet->execute(array(
     $_POST[ad], $_POST[soyad], $_POST[mail], $_POST[yas]
    ));

Buradaki execute komutu bir PHP komut dosyası veya işlevi yürütmek için kullanılabilir. Bir array (dizi) tanımlamışız gelen verileri tutmak için. Buradaki $_POST'ların içine veritabanında hangi isimleri yazdıysak onları yazıyoruz. ad, soyad, mail ve yas veritabanındaki isimlerdir.

if($insert) return 1; else return 0;

Son olarak eğer ekleme yaptıysa 1 döndür yoksa 0 dönsün.
 

Formdan ekleme yapıyoruz. Formu Gönder butonuna tıklandığında veritabanına eklemesini bekliyoruz. Veritabanına bakalım;


 

Gördüğünüz gibi veritabanına formdan girilen veriler eklenmiş. Ekleme işlemimiz başarılı bir şekilde sonuçlandı.

Select İşlemi
Verileri nasıl veritabanına yazacağımızı gördük. Şimdi de verilerin nasıl çekileceğine bakalım.
Öncelikle veritabanı bağlantısı oluşturuyoruz. Bizim kisiler tablomuz vardı. Buradan isimleri çekmek istiyoruz.
$query = $pdo->query("SELECT * FROM kisiler", PDO::FETCH_ASSOC);
if ( $query->rowCount() ){
     foreach( $query as $row ){
          print $row['ad']."<br>";
     }
}
Select anahtar kelimesi sql de verileri çekmemizi sağlar. *from dediğimizde kisiler tablosundaki tüm verileri getirir. Ancak burada sadece ad sütununu çekmek istediğimiz için sadece onu yazdırdık.
Bu şekilde select işlemi yaptığımızda başka bir tablodan veri çekmek istediğimizde onun için de kod yazmamız gerekir.Ancak Select işlemi için fonksiyon oluşturursak, istediğimiz yerde veritabanından kolayca veri çekebiliriz.

function vericek($a,$b){
        global $pdo;
        $b = $_POST['$b']; 
        $array = $pdo->query("SELECT * FROM $a WHERE $b =$b")-> fetch(PDO::FETCH_ASSOC);
        return $array;
}
function anahtar kelimesini kullanarak parametreli ve değer döndüren bir fonksiyon oluşturduk. İncelersek;

$a ve $b şeklinde iki değişken tanımladık. Bunlardan birisi tablo adı diğeri de sütun adıdır.
global $pdo; ise veritabanına bağlantı yapmak için veritabanı değişkenini global olarak tanımlıyoruz ki fonksiyonun içinde de kullanabilelim.
Bir dizi oluşturduk ve hangi tablo isteniyorsa ve hangi sütununa göre veri çekilecekse bunları belirledik. Daha sonra return ile diziyi döndürdük.

Update İşlemi
Update işlemi de aynı select işlemi gibidir. Birden çok yerde kullanmaya müsaittir. Bu nedenle güncelleme için de bir fonksiyon oluşturduk.

function guncelle($tablo_adi,$secilecek_sutun,$secilen_sutun_deger,$id,$degisecek_deger){     
        global $pdo;
        $query = $pdo->prepare("UPDATE $tablo_adi SET $id = :yeni WHERE $secilecek_sutun = :eski"); 
        $update = $query->execute(array(
            "yeni" => "$degisecek_deger",
            "eski" => "$secilen_sutun"
        ));
        if($update) return 1; else return 0;
    }        
    
Tablo adı-Seçilecek Sütun- Seçilen Sütun Değeri- Id'si - Değişecek değer parametreleriyle bir fonksiyon oluşturduk. Veritabanı bağlantısını kurduk.

"UPDATE $tablo_adi SET $id = :yeni WHERE $secilecek_sutun = :eski"

Hangi tabloda değişiklik yapılacaksa o tablonun adı, secilen sütun değerinin id'si =yeni değer ve where yani nereden seçilecek secilen sütun=eski sütun.
Bu şekilde veritabanında, tablodan seçilen sütunun idsini alıyor. Değiştirilecek olan sütun ve oradaki değer id'ye göre bulunuyor ve değiştiriliyor. Eğer güncelleme yapılmışsa 1 yapılmamışsa 0; döndürülüyor.

Delete İşlemi
$delete = $pdo->exec ("DELETE FROM kisiler");
Silme işlemi diğerlerine göre daha kısa bir işlemdir. Veritabanına bağlandıktan sonra eğer bir tabloyu tamamen silmek istiyorsak bu kodu kullanıyoruz. Burada kisiler tablosunu tamamen silme işlemini gerçekleştirdik. "kisiler" tablo adıdır.

$query = $pdo->prepare("DELETE From kisiler WHERE ad = :id");
$delete = $query->execute(array(   'id' => $_GET['id'] )
);
Bu şekilde de tek bir satırda silme işlemi yapılıyor. Hangi kullanıcı seçilmişse onun id'sini bulup o kullanıcıyı veritabanından siliyor. Burada "kisiler" tablosunda ad'a göre id bulunur. Sonra o satır silinir.



Ziyaretçi, yorum yapılsın mı?
İsim:*
E-Mail:


[not-allow-comm]
[/not-allow-comm]

Dikkat!

Aşağıdaki bağlantıdaki makaleye göz atın.

Site Kuralları ve Engellenme Sonrası
İstatistik
File engine/modules/zpstats.php not found.
Sıkça Sorulan Sorular
Video Trafiği
Etiketlere göre ara