Pdo Veritabanı Sınıfı

<?php 
// bağlantı ayarları///////////////////////////////////////////////////////////////////////////////
Class dbConfig extends PDO {

	protected $dbConfig = array();

    protected function createConfig() {
        $this->dbConfig['host'] = 'localhost';
        $this->dbConfig['username'] = 'root';
        $this->dbConfig['password'] = '';
        $this->dbConfig['dbname'] = 'test';
    }

}
// veritabanı sınıfı //////////////////////////////////////////////////////////////////////////////
Class Database extends dbConfig {

	protected $connection;

	function __construct() {

		parent::createConfig();
		try{
			$dsn = 'mysql:host=' . $this->dbConfig['host'] . ';dbname=' . $this->dbConfig['dbname'];
			$this->connection = new PDO($dsn, $this->dbConfig['username'], $this->dbConfig['password']);
            		$this->connection->query("SET NAMES utf8");
        	 	$this->connection->query("SET CHARACTER SET utf8");
            		$this->connection->query("SET COLLATION_CONNECTION = 'utf8_general_ci");
			return true;
		}catch(PDOException $error){
			$errorMesage = 'Hata : Veritabanı bağlantısı kurulamadı !<br>Hata Mesajı =>'.$error->getMessage();
			return $errorMesage;
		}
    }

	public function selectOr($table, $array = null) {
		if($array == null){
			$sql = "SELECT * FROM ".$table;
		}else{			
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' or ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }
	}

	public function selectAnd($table, $array = null) {

		if($array == null){
			$sql = "SELECT * FROM ".$table;
		}else{			
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' and ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }	
	}

	public function selectOrLimit($table, $array = null, $limit, $start = null) {
		if($start == null){
			$limitStr = "LIMIT ".$limit;
		}else{
			$limitStr = "LIMIT ".$start.", ".$limit;
		}
		if($array == null){
			$sql = "SELECT * FROM ".$table." ".$limitStr;
		}else{	
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' or ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString." ".$limitStr;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }
	}

	public function selectAndLimit($table, $array = null, $limit, $start = null) {
		if($start == null){
			$limitStr = "LIMIT ".$limit;
		}else{
			$limitStr = "LIMIT ".$start.", ".$limit;
		}
		if($array == null){
			$sql = "SELECT * FROM ".$table." ".$limitStr;
		}else{
			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' and ";
				}
			}
			$sql = "SELECT * FROM ".$table." WHERE ".$sqlString." ".$limitStr;
		}
        $select = $this->connection->query($sql);
        if ($select) {
            $row = $select->fetchAll();
            return $row;
        } else {
            return false;
        }
	}

	public function insert($table, $array) {

		$columns = implode(", ", array_keys($array));
		$values  = implode("',' ", array_values($array));

		$sql = "INSERT INTO ".$table."(".$columns.") VALUES ('".$values."')";
		$insert = $this->connection->query($sql);
        if ($insert) {
            return $this->connection->lastInsertId($table);
        } else {
            return false;
        }
	}

	public function update($table, $id, $array) {

		$columns = array_keys($array);
		$values = array_values($array);
		$sqlString = "";
		for($i=0;$i<count($columns);$i++){
			if($i==count($columns)-1){
				$sqlString .= $columns[$i]." = '".$values[$i]."' ";
			}else{
				$sqlString .= $columns[$i]." = '".$values[$i]."', ";
			}
		}
		$sql = "UPDATE ".$table." SET ".$sqlString." WHERE id=" . $id;

		$update = $this->connection->query($sql);

        if ($update) {
            return true;
        } else {
            return false;
        }
	}

	public function delete($table, $id) {

		$sql = 'DELETE FROM ' . $table . ' WHERE id=' . $id;

        $delete = $this->connection->exec($sql);

        if ($delete) {
            return true;
        } else {
            return false;
        }
	}

	public function query($sql) {

		$query = $this->connection->query($sql);

        if ($query) {
            return $query;
        } else {
            return false;
        }
	}

	public function count($table, $array = null) {
		if($array == null){
			$sql = "SELECT count(*) from " . $table;
		}else{

			$columns = array_keys($array);
			$values = array_values($array);
			$sqlString = "";
			for($i=0;$i<count($columns);$i++){
				if($i==count($columns)-1){
					$sqlString .= $columns[$i]." = '".$values[$i]."' ";
				}else{
					$sqlString .= $columns[$i]." = '".$values[$i]."' and ";
				}
			}

			$sql = "SELECT count(*) from " . $table. " WHERE ". $sqlString;
		}
        $count = $this->connection->prepare($sql);
        $count->execute();
        return $count->fetchColumn();
	}

	function __destruct() {

        $this->connection = null;
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////
            $db = new Database; 
//Insert Sorgusu
            $userArray = array( 
            'username' => 'deneme', 
            'password' => md5('123456'), 
            'full_name' => 'Deneme DENEME', 
            'email' => 'deneme@deneme.com', 
            'auth' => 'user', 
            'lang' => 'tr' 
            ); 
            $table = "users"; 
            $db->insert($table, $userArray); 
//Update Sorgusu
            $userArray = array( 
            'username' => 'deneme1', 
            'password' => md5('1234'), 
            'lang' => 'en' 
            ); 
            $id=3; 
            $table = "users"; 
            $db->update($table,$id, $userArray); 
//Delete Sorgusu
            $id=3; 
            $table = "users"; 
            $db->delete($table,$id); 
//Count Sorgusu Tüm Tablo
            $table = "users"; 
            $db->count($table); 
//Count Sorgusu Sütun
            $sayılacak = array( 
            'lang' => 'tr', 
            'auth' => 'admin' 
            ); 
            $table = "users"; 
            $db->count($table,$sayılacak); 
//Select and Sorgusu
            $login = array( 
			'username' => 'username', 
			'password' => md5('password'); 
            $user = $db->selectAnd("users", $login); 
            print_r($user); 
//Select or Sorgusu
            $yetkili = array( 
			'username' => 'username', 
			'auth' => 'admin'); 
            $yetkili = $db->selectOr("users", $yetkili); 
            //eğer kayıt varsa herzaman iki boyutlu bir dizi döner yoksa boş döner 
            print_r($yetkili); 
//Select or Limit Sorgusu
            $yetkili = array( 
			'username' => 'username', 
			'auth' => 'admin'); 
            $yetkili = $db->selectOrLimit("users", $yetkili,5); 
            //eğer kayıt varsa herzaman iki boyutlu bir dizi döner yoksa boş döner ve limit kadar veri getirir 
            print_r($yetkili); 
//Limitte başlangıç değeri
            $yetkili = array( 
			'username' => 'username', 
			'auth' => 'admin'); 
            $başlangıc= 4; 
            $limit=7; 
            $yetkili = $db->selectOrLimit("users", $yetkili, $limit, $başlangıc); 
            //eğer kayıt varsa herzaman iki boyutlu bir dizi döner yoksa boş döner ve limit kadar veri getirir 
            print_r($yetkili); 
/*Eğer paremetre göndermek istemiyorsak şu şekilde işlem ysparız selectOrLimit("users", null, $limit, $başlangıc)*/
//Select and Limit Sorgusu
            $user= array( 
			'username' => 'username', 
			'password' => md5('password')); 
            $user = $db->selectAndLimit("users", $user,1); 
            print_r($yetkili); 
//Manuel Sorgu
            $sql = "SELECT (ad,soyad) FROM user ad='fatih' and soyad='göl'"; 
            $gelen = $db->query($sql); 
            $gelen = $gelen->fetchAll(); 
            print_r($gelen); 
?>