Merhabalar. Bir Çoğumuz PDO'yu Class ile nasıl kullanmamız gerektiği konusunda bilgi sahibi değiliz. Bende oturdum öylesine temel seviyede PDO ile Data sınıfı yazdım. Temel seviye için yeterli olacak bir sınıf diye düşünüyorum.

Classın Kodları


<?php
/**
 * @Yazar Talha Keskin
 * @copyright www.talhakeskin.com.tr
 * Bismillahirrahmanirrahim
 */


class veritabaniislem{
    
    public $veritabani = "matbaa";
    public $host="localhost";
    public $hesap="root";
    public $sifre="";
    public $baglan;
    public $bilgial = array();

    
 
    
    function __construct()
    {
        try{
           
              $this->baglan = new PDO("mysql:host=$this->host;dbname=$this->veritabani",$this->hesap,$this->sifre);
              $this->baglan->exec("SET NAMES UTF8 COLLATE utf8_turkish_ci");
        }catch(PDOException $e){
              echo $e->getMessage();
        }
     
    }
    
    function VeriOkuTek($tablo,$alan,$sartalan,$sartkarsilik)
    {       
            $dondur =NULL;
            $yenisorgu = "SELECT $alan FROM $tablo WHERE $sartalan=?";
            $stuncek = $this->baglan->prepare($yenisorgu);
            $stuncek->execute(array($sartkarsilik));
            $dondur = $stuncek->fetch(PDO::FETCH_OBJ);
            return $dondur->{$alan};
         
    }
    
    function VeriOkuCoklu($tablo,$sartalan = array(), $sartkarsilik=array(),$order = "",$ordertur ="",$limit=""){
        
      
         if(count($sartalan)==0){

            $this->bilgial=null;
            if($order!="" AND $limit==""){
            $alancek = $this->baglan->query("SELECT * FROM $tablo ORDER BY $order $ordertur");
            }elseif($order!="" AND $limit!=""){
            $alancek = $this->baglan->query("SELECT * FROM $tablo ORDER BY $order $ordertur LIMIT $limit");    
            }
            elseif($order=="" AND $limit==""){
            $alancek = $this->baglan->query("SELECT * FROM $tablo");
            }
            $sayi = $alancek->rowCount();
            if($sayi==0){
                @$this->bilgial[]=NULL;
            }else{
                
                
               foreach($this->baglan->query("SELECT * FROM $tablo",PDO::FETCH_OBJ) as $row)
               {
            
                @$this->bilgial[]=$row;
               } 
            }
         }else{
                $this->bilgial=null;
                $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal."=? AND ";
            }
                $kes = trim(substr($birlestir,0,-4));
                if($order!="" AND $limit==""){
                    $yenisorgu = "SELECT * FROM $tablo"." WHERE $kes ORDER BY $order $ordertur";
                }elseif($order!="" AND $limit!=""){
                    $yenisorgu = "SELECT * FROM $tablo"." WHERE $kes ORDER BY $order $ordertur LIMIT $limit";
                }elseif($order=="" AND $limit=="") {
                    $yenisorgu = "SELECT * FROM $tablo"." WHERE $kes";
                }
                
                
                
                $alancek = $this->baglan->prepare("$yenisorgu");
                $alancek->execute($sartkarsilik);
                    while($row = $alancek->fetch(PDO::FETCH_OBJ)){
                        $this->bilgial[] = $row;
                    }

                
         }
        
        
       
       
    }
    
    
    
     function veriEkle($tablo,$sartalan = array(), $sartkarsilik=array()){
        $sayi=0;
        $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal.",";
            }
                $kes = trim(substr($birlestir,0,-1));
              
        
        $ekleme=$this->baglan->prepare("INSERT INTO $tablo VALUES ($kes)");
        $ekleme->execute($sartkarsilik);  
        if($ekleme){
            $sayi=1;
        }else{
            $sayi=0;
        }
        
        return $sayi;
    }
    
        function veriGuncelle($tablo,$sartalan = array(), $sartkarsilik=array(),$where){
        $sayi=0;
        $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal."=?,";
            }
                $kes = trim(substr($birlestir,0,-1));
              
        
        $ekleme=$this->baglan->prepare("UPDATE $tablo SET $kes WHERE $where=?");
        $ekleme->execute($sartkarsilik);  
        if($ekleme){
            $sayi=1;
        }else{
            $sayi=0;
        }
    
        return $sayi;
    }
    
     function veriGuncelleCoklu($tablo,$sartalan = array(), $sartkarsilik=array(),$where=array()){
        $sayi=0;
        $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal."=?,";
            }
                $kes = trim(substr($birlestir,0,-1));
              
          $wherealan ="";
                foreach($where as $sartal){
                $wherealan .= $sartal."=? AND";
            }
                $keswhere = trim(substr($wherealan,0,-4));
              
        
        $ekleme=$this->baglan->prepare("UPDATE $tablo SET $kes WHERE $keswhere");
        $ekleme->execute($sartkarsilik);  
        if($ekleme){
            $sayi=1;
        }else{
            $sayi=0;
        }
        
        return $sayi;
    }
    
    function veriSil($tablo,$sartalan = array(), $sartkarsilik=array()){
        $sayi = 0;
        $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal."=? AND ";
            }
        $kes = trim(substr($birlestir,0,-4));
        
        $silme=$this->baglan->prepare("DELETE FROM $tablo WHERE $kes");
        $silme->execute($sartkarsilik);
        
        if($silme){
            $sayi=1;
        }else{
            $sayi=0;
        }
    }

    function veriSaydir($tablo,$sartalan = array(), $sartkarsilik=array()){
        $sayi=0;
        if(count($sartalan)==0){
        $sorgu = $this->baglan->prepare("SELECT * FROM $tablo");
        $sorgu->execute($sartkarsilik);
        $sayi = $sorgu->rowCount();
        
        }else{
        $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal."=? AND ";
            }
        $kes = trim(substr($birlestir,0,-4));
        
        $sorgu = $this->baglan->prepare("SELECT * FROM $tablo WHERE $kes");
        $sorgu->execute($sartkarsilik);
        $sayi = $sorgu->rowCount();
      
        }
        return $sayi;
        
    }
    
     function veriEkleSayiAl($tablo,$sartalan = array(), $sartkarsilik=array()){
        $sayi=0;
        $birlestir ="";
                foreach($sartalan as $sartal){
                $birlestir .= $sartal.",";
            }
                $kes = trim(substr($birlestir,0,-1));
              
              
        
        $ekleme=$this->baglan->prepare("INSERT INTO $tablo VALUES ($kes)");
        $ekleme->execute($sartkarsilik);  
        $sayi = $this->baglan->lastInsertId();
        
        return $sayi;
    }
    
    
    
    
     function VeriOkuMulti($sorgu) {
        $this->bilgial = null;
        $statement = $this->baglan->query("$sorgu",PDO::FETCH_OBJ);
        $statement->nextRowset();
        $rowset = $statement->fetchAll();
        
        foreach($rowset as $row) {
            $this->bilgial[]=$row;
        }
    }
    
    function VeriOkuCokluSorgu($sorgu){
      $this->bilgial=null;
        foreach($this->baglan->query("$sorgu",PDO::FETCH_OBJ) as $row){
            
           $this->bilgial[]=$row;
        }
    }
    function veriSaydirSorgu($sorgu,$sart = array()){
               
        $sayi=0;
        
        $sorgu = $this->baglan->prepare("$sorgu");
        $sorgu->execute($sart);
        $sayi = $sorgu->rowCount();
        
        return $sayi;
    }
    
function urlYap($baslik){
   $baslik = str_replace(array("&quot;","'"), NULL, $baslik);
		$bul = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '-');
		$yap = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', ' ');
		$perma = strtolower(str_replace($bul, $yap, $baslik));
		$perma = preg_replace("@[^A-Za-z0-9\-_]@i", ' ', $perma);
		$perma = trim(preg_replace('/\s+/',' ', $perma));
		$perma = str_replace(' ', '-', $perma);
		return $perma;
}


    
    function __destruct(){
       $this->baglan=null; 
    }
    
    
}

/*
Merhaba, Bu benim yazdığım gelişmiş bir PDO clasıdır. içerisinde heerşeyi bulabilirsin. 
Clasın kullanımı bssittir. Herhangi sorgu yazmana gerek kalmadan bu classı kullanabilirsin. Örneklerle daha iyi anlarsın. 

Classın kullanımına geçmeden önce her fonksionyda $sayi değeri mevcut bu $sayi değeri etkilenen satır sayısını geri döndürür. 

Yani 
$sayi = fonksiyon şeklinde kullanırsın mesela bir veri silersin. Ardından if yaparsın 

if($sayi>0)
{
    echo"veri eklenmiştir";
}else
{
    echo"veri eklenememiştir";
}

gibi. her fonksiyonun sonunda $sayi döner yani kullanabilirsin. 

Classı kullanırken dikkat etmen gereken şey, class AND Sorguları için yazıldı. Eğer OR Ya da farklı bir şey kullanacaksan o zaman sonunda sorgu olan 
fonksiyonları kullan örneklere geçiyorum daha iyi anlarsın. 
Öncelikle Classı tanımlayalım. 

$db = new veritabaniislem();

------Örnek 1 Tek sorgu çekmek:------
Senaryo : Sitemizin arama motorlarında görünecek başlığını <title> </title> Tagları arasına yazalım. veritabanındaki alanın adı title olsun tablo adı da 
ayarlar olsun ID değeri de 1 olsun
Burada tek veri çekeceğimizden VeriOkuTek fonksiyonunu kullanacaksın demektir. 

<title><?=$db->VeriOkuTek("ayarlar","title","ID",1)?></title>
Bu sorgu ile ayarlar tablosundaki ID değeri 1 olan title alanını çekersin. 

Senin senaryonda uyeler tablosundan ID değeri 15 olan üyenin kullaniciadi adlı alanını çekelim.

$uyeid = $db->VeriOkuTek("uyeler","kullaniciadi","ID",15);

------Örnek 2 Şarta Bağlı Olmadan Çoklu Kayıt Çekmek------
Senaryo: Veritabanında uyeler tablosundaki tüm üyeleri çekelim ve bir table değerinin içerisine yazdıralım.
Veritabanındaki tablo adımız uyeler olsun alanlar | ID | uyeadi | babaadi | anaadi |
 
 <table>
     <tr>
      <td>Üye Adı</td>
      <td>Baba Adı</td>
      <td>Ana Adı</td>
     </tr>
    <?php 
$db->VeriOkuCoklu("uyeler");
foreach($db->bilgial as $row)
{
    ?>
     <tr>
      <td><?=$row->uyeadi?></td>
      <td><?=$row->babadi?></td>
      <td><?=$row->anaadi?></td>
     </tr>
     <?php
}
?>
  </table>


----- Örnek 3 Veritabanından baba adı mahmut olan üyeleri çekelim ve yazdıralım -----
<table>
     <tr>
      <td>Üye Adı</td>
      <td>Baba Adı</td>
      <td>Ana Adı</td>
     </tr>
    <?php 
$db->VeriOkuCoklu("uyeler",array("babadi"),array("mahmut"));
foreach($db->bilgial as $row)
{
    ?>
     <tr>
      <td><?=$row->uyeadi?></td>
      <td><?=$row->babadi?></td>
      <td><?=$row->anaadi?></td>
     </tr>
     <?php
}
?>
  </table>
  
  Burada dikkat etmen gereken kısım 1. array hangi alanlarda şart aranıyor, 2 array ise o alanlara karşılık olarak ne gelecek
  
  
----- Örnek 4 Veritabanından baba adı mahmut ve anne adı kezban olan üyeleri çekelim ve yazdıralım -----
  
  <table>
     <tr>
      <td>Üye Adı</td>
      <td>Baba Adı</td>
      <td>Ana Adı</td>
     </tr>
    <?php 
$db->VeriOkuCoklu("uyeler",array("babadi","anneadi"),array("mahmut","kezban"));
foreach($db->bilgial as $row)
{
    ?>
     <tr>
      <td><?=$row->uyeadi?></td>
      <td><?=$row->babadi?></td>
      <td><?=$row->anaadi?></td>
     </tr>
     <?php
}
?>
  </table>
  
  
  ----- Örnek 5 Veritabanından baba adı mahmut ve anne adı kezban veya müzeyen olan üyeleri çekelim ve yazdıralım -----
  Not: İşte burada dediğim sorgu fonksiyonları devreye girmekte çünkü sorguda hem and hem de or bulunmakta. Bu fonksiyonalrda düz sorgu yazmak gerek
  JOIN Sorguları gibi karışık sorgularda bu metotla yazılmalıdır. 
  
  <table>
     <tr>
      <td>Üye Adı</td>
      <td>Baba Adı</td>
      <td>Ana Adı</td>
     </tr>
    <?php 
$db->VeriOkuCokluSorgu("SELECT * FROM uyeler WHERE babadi='mahmut' AND (anneadi='kezban' or anneadi='müzeyyen'))");
foreach($db->bilgial as $row)
{
    ?>
     <tr>
      <td><?=$row->uyeadi?></td>
      <td><?=$row->babadi?></td>
      <td><?=$row->anaadi?></td>
     </tr>
     <?php
}
?>
  </table>
  
  
  ----- Örnek 6 JOIN Sorgusu -----
  Veritabanında bulunan uyeler tablosundaki kayıtlarla, uyedetayları adlı tabloda joın uygulayalım. 
  İki tabloda ortak alanlar uyeler tablosundaki ID ve uyedetayları tablosunda UyeID olsun ve UyeID'si 1 olan kişinin bilgilerini çekelim
  
  <table>
     <tr>
      <td>Üye Adı</td>
      <td>Baba Adı</td>
      <td>Ana Adı</td>
     </tr>
    <?php 
$db->VeriOkuCokluSorgu("SELECT * FROM uyeler u INNER JOIN uyedetaylari ud ON u.ID=ud.UyeID WHERE u.ID=1");
foreach($db->bilgial as $row)
{
    ?>
     <tr>
      <td><?=$row->uyeadi?></td>
      <td><?=$row->babadi?></td>
      <td><?=$row->anaadi?></td>
     </tr>
     <?php
}
?>
  </table>
  
   ----- Örnek 7 Veri Eklemek -----
  veritabanındaki üyeler tablosuna POST'tan gelen verileri ekleyelim
  Veritabanındaki alanlarımız 
  ID - Birincil,Otomatik artan
  uyeadi - varchar
  babaadı - varchar
  kayittarihi -  date
  Olsun. 
  Burada dikkat etmen gereken nokta PDO'da veriler execute edilirken otomatik artan alanlar NULL ile tarih alanları ise NOW ya da ? olarak temsil edilir. 
  Eğer tarih alanı otomatik olacaksa PHP'deki gibi date("d-m-Y") gibi bir sorgu tanımlamana gerek yok direk NOW() yaparsan işlem tamam olur 
  ama, eğer tarihi sen manuel olarak vermek istersen NOW() yerine ? yapıp parametreyi sen tanımlamalısın
  
  $db->VeriEkle("uyeler",array("NULL","?","?","NOW()"),array($_POST["uyeadi"],$_POST["babadi"]));
  Dikkat ettiysen sırasına göre sadece ? olan alanların karşılığını yazdım. NULL ve NOW alanlara parametre verilmez.
  Eğer now() yaptığım alan ? olsaydı Sorgu şöyle olurdu  
  $db->VeriEkle("uyeler",array("NULL","?","?","?"),array($_POST["uyeadi"],$_POST["babadi"],date("d-m-"Y")));
  
  ----- Örnek 8 Veri Güncelleme -----
  Veritabanındaki üyeler tablosunda ID değeri 10 olan üyenin uyeadi adlı alanını $_POST["uyeadi"] değeri ile güncelleyelim
  
  $db->VeriGuncelle("uyeler",array("uyeadi"),array($_POST["uyeadi"],10),"uyeid");
  
  Burada dikkat etmen gereken 1. array alan adlarını alır 
  2. array güncelleme yapılacak kayıtları alır en sonda hangi alana göre güncellenecek bunu alır bu değerin karşılığı ise 2. array'ın en sonuna eklenir'
  
   ----- Örnek 9 Veri Güncelleme -----
  Veritabanındaki üyeler tablosunda ID değeri 10 olan üyenin uyeadi adlı alanını ve babadi adlı alanını 
   $_POST["uyeadi"],$_POST["babaadi"] değerleri ile güncelleyelim
  
  $db->VeriGuncelle("uyeler",array("uyeadi","babadi"),array($_POST["uyeadi"],$_POST["babaadi"],10),"uyeid");
  
   ----- Örnek 9 Çoklu Veri Güncelleme -----
  Veritabanındaki üyeler tablosunda ID değeri 10 olan ve 15 olan  üyenin uyeadi adlı alanını ve babadi adlı alanını  
  $_POST["uyeadi"],$_POST["babaadi"] değerleri ile güncelleyelim
  
  $db->VeriGuncelle("uyeler",array("uyeadi","babadi"),array($_POST["uyeadi"],$_POST["babaadi"],10,15),array("uyeid","uyeid"));
  
  ----- Verislme ------
  veritabanından uyeler tablosundan ID'si 1 olan üyeyi silelim'
  $db->veriSil("uyeler",array(ID),array(1));
  
  -----Çoklu Şart Bağlı Veri Silme----
  veritabanından uyeler tablosundan ID'si 1 olan ve kullaniciid'si talha olan üyeyi, silelim
  $db->veriSil("uyeler",array("ID","kullaniciid"),array(1,"talha"));
  
  -----Veri Saydırma-----
  mysql'de mysql_num_rows fonksiyonu ile aynı işlevi görür'
  Örnek veritabanında uyeler tablosunda kullaniciadi alanı talha ve babaadi alanı sinan olan kayıt var mı bakalım
  
  $sayi = $db->veriSaydir("uyeler",array("kullaniciadi","babaadi"),array("talha","sinan"));
  
  if($sayi>0)
  {
    echo"Kayıt Var";
  }else
  {
    echo"Kayıt YOk";
  }
  
  ------------------------------------------Ekstra Örnekler----------------------------
  ------Veritabanından Kayıt Silmek İstedik Ancak Silindimi Emin Olmak İstiyoruz Yani-----
  $sil= mysql_query("DELETE FROM uyeler WHERE UyeID=1")
  
  if($sil)
  {
    echo"üye Silindi"
  }else
  {
    echo"üye silinemedi";
  }
  
  Kodlarına karşılık gelen kodu classla yazalım. Başta da söylediğim gibi her fonksiyon içerisinde $sayi değişkenini döndürüyor.
  
  $silindimi = veriSil("uyeler",array("UyeID"),array(1));
  if($silindimi>0)
  {
    echo"Üye Silindi";
  }else
  {
    echo"Üye Silinemedi";
  }
  
  ----Veritabanına üye ekleyelim daha sonra bu üyenin ID'sine bağlı olarak üyedetayları adlı tabloya'da kayıt ekleyelim''
  Veritabanı alanlarımız üyeler tablosu için;
  uyeler
  ID - Otomatik artan
  UyeMAIL- üyenin mail adresi
  KullaniciADI- üyenin adı
  
  Uyedetaylari adlı tablo için alanlar
  uyedetayları
  detayid - otomatik artan
  uyeid - üyeler tablosuna bağlı bir alan int tipinde
  uyefoto - varchar
  
  Üyeyi ekleyelim
  $eklenenid= $db->veriEkle("uyeler",array("NULL","?","?"),array($_POST["mail"],$_POST["kullaniciid"]))
  şimdi eklenen son kayıt yani eklenenid alalım ve üye detayları tablosuna ekleyelim
              $db->veriEle("uuyedetaylari",array("NULL","?","?"),array($eklenen,$_POST["uyefoto"]));
              
  
  
  
*/




?>