İçeriğe geç

Php Veritabanı Sınıfı

Merhaba arkadaşlar,

Bu yazımda sizlere kendi yazmış olduğum projelerinizde kullanabileceğiniz php veritabanı sınıfımı sunacağım. Sınıf içerisinde Insert, Update, Select, SelectUniq, Delete, columnsSet, valuesSet ve Reset metotları bulunuyor. Bu metotların nasıl kullanılacağını sınıf içerisinde açıklama satırları ile belirttim ancak yine de kısaca açıklayalım.

Insert: Veri ekleme işlemlerinde kullanacağımız metodumuz. Örneğin yazilar tablosuna php veritabanı sınıfı adında bir yazı eklemek istersek şu şekilde kullanmamız gerekiyor.


<?php

$sinif->Insert("yazilar","baslik","Php veritabanı sınıfı");

?>

Burada “baslik” olarak yazdıgım yer yazilar tablosundaki veriyi ekleyeceğimiz alanın adıdır.

Update: Veri güncelleme işlemlerinde kullanacağımız metodumuz. Yukarıdaki örneğimizden devam ederek php veritabanı sınıfı adlı yazının baslığını php olarak değiştirelim.


<?php

$sinif->Update("yazilar","baslik","php","baslik=php veritabanı sınıfı");

?>

Select: Toplu olarak veri sorgulamak istediğimizde kullanacağımız metodumuz. Uyeler tablomuzdan durumu aktif olan bütün kullanıcıları çekelim.


<?php

$sinif->Select("uyeler","*","durum = ?","aktif");

?>

Bu şekilde bize tüm kayıtları dizi olarak geri döndürür. Hangi alanların döndürülmesini istiyorsak bunları da belirtebiliriz. Örneğin aynı şekilde uyeler tablomuzdan durumu aktif olan kullanıcıların sadece id değerlerini almak istiyorsak tek yapmamız gereken $sinif->Select(“uyeler”,”id”,”durum = ?”,”aktif”); şeklinde yazmamız yeterlidir. Bu metodumuzda ikinci arguman hangi alanların döndüreleceğini belirlememizi sağlar.

SelectUniq: Tek bir veri çekeceksek kullanacağımız metodumuz. Bu metodunun kullanım şekli Select metoduyla aynıdır. Ancak bu metodumuz sadece bir satır geri döndürür.

Delete: Veri silmek istediğimiz zaman kullanacağımız metodumuz. Örneğin uyeler tablomuzdan id’si 5 olan ve durumu aktif olan kullanıcıları silelim.


<?php

$sinif->Delete("uyeler","id,durum","5,aktif","&&");

?>

Burada kullanmış olduğumuz && operator şuna karşılık gelmektedir: DELETE FROM uyeler WHERE id = 5 && durum=’aktif’.

Yinede kullanım konusunda sıkıntı yaşarsanız buraya yorum olarak atabilirsiniz yardımcı olmaktan mutluluk duyarım 🙂 Sınıfı aşağıdaki github adresinden indirebilirsiniz. Yada alttaki kod kısmından kopyalayabilirsiniz.

Github: https://github.com/emrtnm/library/blob/master/database.php

KOD

<?php

   /**
   * @ Package	: Database
   * @ Extends	: PDO
   * @ Author	: Emrullah Tanıma
   * @ Author URI: http://www.emrullahtanima.com
   */
   class Database extends PDO {

      private $columns	= '';
      private $values	= array();
      private $where		= '';
      private $operator = '&&';
      private $order_by	= 'DESC';
      private $limit		= 10;

      public function __construct($DB_TYPE, $DB_SERVER, $DB_NAME, $DB_USER, $DB_PASS){

         try{

            // Database Connection
            parent::__construct($DB_TYPE.':host='.$DB_SERVER.';dbname='.$DB_NAME.';charset=utf8', $DB_USER, $DB_PASS);

            // Database Character Set
            $this->query("SET CHARACTER SET uf8");
            $this->exec("SET NAMES 'utf8'; SET CHARSET 'utf8'");

            // PDO Error Reporting Mode
            $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

         }catch(PDOException $e){

            // Database Connection Error Message
            $error=("<br/><div style='text-align:center'>" 
            . "<span style='padding: 5px; border: 1px solid red; background-color:#fce0e0;" 
            . "font-family: Verdana; color:red; font-size: 11px; margin-left:auto; margin-right:auto'>" 
            . "<b>Database Error: </b>" . $this->database . " database connection failed.</span></div>");
            echo $error;
            exit;

         }

      }

      /**
      * @ Insert Function
      * @ Params		: $table, $columns, $values
      * @ Decription	: Row insert. 
      * @ Example		: $this->Insert('tablename','name,surname','John,Doe');		
      */
      public function Insert($table,$columns,$values){

         $this->Reset();

         $this->columns = $this->columnsSet($columns);
         $this->values	= $this->valuesSet($values);

         $sql = "INSERT INTO {$table} SET {$this->columns}";
         $sth = $this->prepare($sql)->execute($this->values);

         if($sth){
            return $this->lastInsertId();
         }else{
            return $this->errorInfo();
         }

      }

      /**
      * @ Update Function
      * @ Params		: $table, $columns, $values, $where
      * @ Decription	: Row or rows updater. 
      * @ Example		: $this->Update('tablename','name,surname','John,Doe','id=1');
      * @ Example2 : $this->Update('tablename','name,surname',array('John','Doe'),'id=1');		
      */
      public function Update($table,$columns,$values,$where){

         $this->Reset();

         $this->columns	= $this->columnsSet($columns);
         if(is_array($values)){
            $this->values = $values;
         }else{
            $this->values	= $this->valuesSet($values);
         }

         $sql = "UPDATE {$table} SET {$this->columns} WHERE {$where}";
         $sth = $this->prepare($sql)->execute($this->values);

         if($sth){
            return 'okey';
         }else{
            return $this->errorInfo();
         }

      }

      /**
      * @ Select Function
      * @ Params		: $table, $fields ,$where, $values, $limit, $order_by
      * @ Decription	: Select ;)
      * @ Example	1	: $this->Select("tablename","id = ?",1);
      * @ Example	2	: $this->Select("tablename","name = ? && surname = ?","John,Doe",5,"ASC");
      * @ Return Fetch All !
      */
      public function Select($table,$fields,$where,$values,$limit=null,$order_by=null){

         $this->Reset();

         $this->values	= $this->valuesSet($values);
         if(isset($order_by)) $this->order_by = $order_by;
         if(isset($limit)) $this->limit = $limit;

         $sql = "SELECT {$fields} FROM {$table} WHERE {$where} ORDER BY id {$this->order_by} LIMIT {$this->limit}";

         $sth = $this->prepare($sql);
         $sth->execute($this->values);

         if($sth->rowCount() > 0){
            return $sth->fetchAll();
         }else{
            return 'null';
         }

      }

      /**
      * @ SelectUniq Function
      * @ Params		: $table, $fields ,$where, $values, $order_by
      * @ Example		: $this->SelectUniq("tablename","*","id=?",1);
      * @ Return 1 row !
      */
      public function SelectUniq($table,$fields,$where,$values,$order_by=null){

         $this->Reset();

         $this->values	= $this->valuesSet($values);
         if(isset($order_by)) $this->order_by = $order_by;

         $sql = "SELECT {$fields} FROM {$table} WHERE {$where} ORDER BY id {$this->order_by}";

         $sth = $this->prepare($sql);
         $sth->fetch(PDO::FETCH_ASSOC);
         $sth->execute($this->values);

         if($sth->rowCount() > 0){
            return $sth->fetch();;
         }else{
            return 'null';
         }

      }

      /**
      * @ Delete Function
      * @ Params		: $table, $where, $values, $operator
      * @ Description: Deletes the data in the affected rows.
      * @ Example 1	: $this->delete('tablename','name,surname','John,Doe');
      * @ Example 2	: $this->delete('tablename','name,surname','John,Doe','&&');
      */
      public function Delete($table,$where,$values,$operator=null){

         $this->Reset();

         if(isset($operator)) $this->operator = $operator;

         $var = explode(",", trim($where));
         foreach($var as $key){
            $this->where = $this->where.' '.$key.' = ? '.$this->operator;
         }
         $this->where	= rtrim($this->where, $this->operator);

         $this->values	= $this->valuesSet($values);

         $sql = "DELETE FROM {$table} WHERE {$this->where}";
         $sth = $this->prepare($sql)->execute($this->values);

         if($sth){
            return 'okey';
         }else{
            return $this->errorInfo();
         }

      }

      /**
      * @ ColumnsSet Function
      * @ Params	: $columns;
      */
      protected function columnsSet($columns){

         $var = explode(",", trim($columns));
         foreach($var as $key){
            $this->columns = $this->columns.', '.$key.' = ?';
            $this->columns = ltrim($this->columns, ",");
         }
         return $this->columns;

      }

      /**
      * @ ValuesSet Function
      * @ Params		: $values;
      * @ Decription	: Sent variable $this->values array push.
      */
      protected function valuesSet($values){

         $var = explode(",", trim($values));
            foreach($var as $key){
            array_push($this->values, $key);
         }
         return $this->values;

      }

      /**
      * @ Reset Function
      * @ Description: In the this class private methods reset.
      */
      public function Reset(){

         $this->columns		= '';
         $this->values		= array();
         $this->where		= '';
         $this->operator	= '&&';
         $this->limit		= 10;
         $this->order_by	= 'DESC';

      }

   }

?>

Php veritabanı sınıfı umarım sizlere faydalı olur arkadaşlar. Bir sonraki yazımda görüşmek üzere iyi çalışmalar dilerim 🙂



 
Kategori:PHP

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir