İLKER ŞAHİN

PDO Veritabanı Sınıfı

PDO Veritabanı Sınıfı

  • 25 Aralık 2017
  • 0 YORUM

PDO sisteminde veri ekleme-çekme-güncelleme gibi işlemleri satır satır yazmaktansa tek satırda fonksiyonu çağırarak bu işlemi kolaylaştırıyoruz.

Öncelikle PDO bağlantısı ;

header('Content-Type: text/html; charset=utf-8'); 

$k_id = "username"; // veritabanı kullanıcı adı - database username 
$k_pass = "password"; // veritabanı kullanıcı şifresi - database password 
$k_host = "localhost"; // sunucu - host 
$k_db = "database"; // veritabanı adı - database name 

try { 
    $db = new PDO("mysql:host={$k_host};dbname={$k_db};charset=utf8", $k_id, $k_pass); 
    // veritabanından veri çekerken türkçe sorunlarını düzeltmek için utf-8e dönüştürüyoruz 
    $db->exec("SET NAMES 'utf8';"); 
    $db->exec("SET CHARSET 'utf8;'"); 
} catch ( PDOException $e ){ 
     // die($e->getMessage()); // bağlantı sağlanamıyorsa bu satırı aktif ederek sorunu öğreniyoruz 
     die("DATABASE NOT FOUND!"); // veya hata çıktımızı veriyoruz 
}

PDO ile Veri Çekme (Tek)

function veriCek($tablo, $alanlar, $sutun, $id) 
{ 
    global $db; 
     
    $veri = $db->query("SELECT {$alanlar} FROM {$tablo} WHERE {$sutun} = '{$id}'")->fetch(PDO::FETCH_ASSOC); 
    return $veri; 
} 

// Fonksiyonu kullanımı 

$tekbirkullanici = veriCek("users", "*", "id", "1"); 

// Burada dedik ki, "users" tablosunda ki "id" sutununda değerini "1" olan veriyi çek. 
// Bu verininde "*" diyerek tüm bilgilerine ulaşmak olduk. "*" yerine "sütunadı" yazarsanız sadece bu değeri/sütunda ki veriyi çekecektir.

PDO ile Tablo Çekme (Toplu)

function tabloCek($tablo, $alanlar, $manuel) 
{ 
    global $db; 
     
    $veri = $db->query("SELECT {$alanlar} FROM {$tablo} {$manuel}", PDO::FETCH_ASSOC); 
    return $veri; 
} 

// Fonksiyon kullanımı 

$kullanicilar = tabloCek("users", "*", "ORDER BY id DESC"); 

// Burada dedik ki, "users" tablosunda ki tüm verileri çek. "ORDER BY id DESC" diyerekte manuel komut girdik. 
// Yani "id" değerine göre tersten bir sıralama yapacaktır. 
// Aynı şekilde "*" dediğimiz bölüm ise tüm sütunların değerini çekmek için

PDO ile Veri Silme

function veriSil($tablo, $sutun, $id) 
{ 
    global $db; 
     
    $query = $db->prepare("DELETE FROM {$tablo} WHERE {$sutun} = :edc"); 
    $delete = $query->execute(array( 
       'edc' => $id 
    )); 
} 

// Fonksiyon Kullanımı 

$kullaniciyiSil = veriSil("users", "id", "1"); 

// Burada dedik ki, "users" tablosunda "id" değeri "1" olanı sil. 
// Sadece bu kadar..  

PDO ile Veri Ekleme

function veriEkle($sutunlar, $veriler, $tablo) 
{ 
    global $db; 
     
    $other = array(); 
    $sorgu = ""; 
    $count = count($veriler); 
    $a = 0; 
    for($i = 0; $i < $count; $i++) 
    { 
        $a++; 
        if($a == $count) 
            $sorgu .= $sutunlar[$i]." = ?"; 
        else 
            $sorgu .= $sutunlar[$i]." = ?,"; 
    } 
     
    $query = $db->prepare("INSERT INTO {$tablo} SET {$sorgu}"); 
    $insert = $query->execute($veriler); 
     
    if ( $insert ) 
        return true; 
    else 
        return false; 
} 

// Fonksiyon Kullanımı 

// 2 Yolu vardır (Benim en tercih ettiğim) 

$sutunlar = array("kullaniciadi", "password"); 
$cevaplar = array("edcsmile", "şifre123"); 

$kullaniciEkle = veriEkle($sutunlar, $cevaplar, "users"); 

Veya 

$kullaniciEkle = veriEkle(array("kullaniciadi", "password"), array("edcsmile", "şifre123"), "users"); 

// Burada dedik ki, "$sutunlar" olarak belirttiğimiz dizi veritabanında ki sütunların isimleri 
// "$cevaplar" olarak belirttiğimiz dizi de sırasıyla dizilere elemanları yerleştirdik. 
// Ve fonksiyonu çağırıp belirlediğimiz tabloya bu veriyi ekledik.

PDO ile Veri Güncelleme

function veriGuncelle($sutunlar, $veriler, $tablo, $hedef, $no) 
{ 
    global $db; 
     
    $other = array(); 
    $sorgu = ""; 
    $a = 0; 
    $count = count($veriler); 
    for($i = 0; $i < $count; $i++) 
    { 
        $a++; 
        if($a == $count) 
            $sorgu .= $sutunlar[$i]." = :a_".$sutunlar[$i]; 
        else 
            $sorgu .= $sutunlar[$i]." = :a_".$sutunlar[$i].","; 
    } 
     
    $b = 0; 
    foreach( $sutunlar as $sutun ) 
    { 
        $other["a_".$sutun] = $veriler[$b]; 
        $b++; 
    } 
     
    $other["no"] = $no; 
     
    $query = $db->prepare("UPDATE {$tablo} SET {$sorgu} WHERE {$hedef} = :no"); 
    $update = $query->execute($other); 
     
    if ( $update ) 
        return true; 
    else 
        return false; 
} 

// Fonksiyon kullanımı 

$sutunlar = array("username", "password"); 
$cevaplar = array("edcsmile2", "123şifre"); 

// buranın açıklaması ; 
// username (sütun) > edcsmile2 (değer) 
// password (sütun) > 123şifre (değer) 

$kullaniciGuncelle = veriGuncelle($sutunlar, $cevaplar, "users", "id", "1"); 

// Users tablosunda ki "id" sutunundan değeri "1" olana oluşturduğumuz dizide ki verileri hedeflerine göre güncelledik. 
// Veri ekleme fonksiyonuyla aynı şekilde tek farkı, ek olarak hedef ve hedefin değerini belirledik. 
// etkilenekcek sütunlar 
// sütunlara değerler 
// tablo, hedef, değer 
// işlem sadece bu kadar..

TÜM Sorgu cümlesini kullanmak isteyenler içinde

// tablo için bu

function tabloCMD($sorgu)
{
    global $db;
    
    $veri = $db->query($sorgu, PDO::FETCH_ASSOC);
    return $veri;
}

// tekil için bu

function veriCMD($sorgu)
{
    global $db;
    
    $veri = $db->query($sorgu)->fetch(PDO::FETCH_ASSOC);
    return $veri;
}

// genel

function cmd($sorgu)
{
    global $db;
    
    $veri = $db->query($sorgu);
    return $veri;
}

$sorgu = cmd("TÜM SORGU CÜMLESİ");

Aklınıza takılan soruları yorum olarak yazabilirsiniz.


YORUM YAP