MySQL基本操作クラスをカプセル化

6975 ワード

 'localhost',
                'dbname'   => 'test',
                'username' => 'root',
                'password' => '1234'
            );//     
 
    /**
     *     ,     
     */

   private function __construct(){
         
      
           $db = mysqli_connect($this->_configs['hostname'],$this->_configs['username'],$this->_configs['password'],$this->_configs['dbname']);
            mysqli_query($db,"set names utf8");
            if(!$db->errno){
                echo  "    ".mysqli_connect_error();
            }
            	self::_instance =    $db;
        }
    }
		    //  __clone           
		 public function __clone(){
		         trigger_error('Clone is not allow!',E_USER_ERROR);
		  }
		
		//    ,              
		public static function getInstance(){
			if(!(self::$_instance instanceof self)){
					self::_instance = new self;
		}
		return self::$_instance;
		}
    /**
     *       
     *
     * @param         $table  The table
     *
     * @return     boolean  All.
     */
    public function getAll($table=null){
          
        $sql = "SELECT * FROM {$table}";
        $data = mysqli_fetch_all($this->execute($sql));
        return $data;
    }
 
    public function table($table){
        $this->_table = $table;
        return $this;
    }
 
    /**
     *       
     *
     * @param      string   $fields  The fields
     *
     * @return     boolean  ( description_of_the_return_value )
     */
    public function select($fields="*"){
        $fieldsStr = '';
    
        if(is_array($fields)){
            $fieldsStr = implode(',', $fields);
        }elseif(is_string($fields)&&!empty($fields)){
            $fieldsStr = $fields;
        }
        $sql = "SELECT {$fields} FROM {$this->_table} {$this->_where} {$this->_order} {$this->_limit}";
        $data = mysqli_fetch_all($this->execute($sql));
        return $data;
    }
 
    /**
     * order  
     *
     * @param      string   $order  The order
     *
     * @return     boolean  ( description_of_the_return_value )
     */
    public function order($order=''){
      
        if(is_string($order)&&!empty($order)){
            $orderStr = "ORDER BY ".$order;
        }
        $this->_order = $orderStr;
        return $this;
    }
 
    /**
     * where  
     *
     * @param      string  $where  The where
     *
     * @return       ( description_of_the_return_value )
     */
    public function where($where=''){
        
        if(is_array($where)){
            foreach ($where as $key => $value) {
                if($value == end($where)){
                    $whereStr .= "`".$key."` = '".$value."'";
                }else{
                    $whereStr .= "`".$key."` = '".$value."' AND ";
                }
            }
            $whereStr = "WHERE ".$whereStr;
        }elseif(is_string($where)&&!empty($where)){
            $whereStr = "WHERE ".$where;
        }
        $this->_where = $whereStr;
        return $this;
    }
 
    /**
     * group  
     *
     * @param      string   $group  The group
     *
     * @return     boolean  ( description_of_the_return_value )
     */
    public function group($group=''){
        $groupStr = '';
         
        if(is_array($group)){
            $groupStr = "GROUP BY ".implode(',',$group);
        }elseif(is_string($group)&&!empty($group)){
            $groupStr = "GROUP BY ".$group;
        }
        $this->_group = $groupStr;
        return $this;
    }
 
    /**
     * limit    
     *
     * @param      string  $limit  The limit
     *
     * @return       ( description_of_the_return_value )
     */
    public function limit($limit=''){
        $limitStr = '';
       
        if(is_string($limit)||!empty($limit)){
            $limitStr = "LIMIT ".$limit;
        }elseif(is_numeric($limit)){
            $limitStr = "LIMIT ".$limit;
        }
        $this->_limit = $limitStr;
        return $this;
    }
 
    /**
     *   sql  
     *
     * @param         $sql    The sql
     *
     * @return     boolean  ( description_of_the_return_value )
     */
    public function execute($sql=null){
       if(!self::_instance){
       	return false;
       }
        $res = mysqli_query(self::_instance,$sql);
        if(!$res){
            $errors = mysqli_error_list(self::_instance);
           return $errors;
        }
        return $res;
    }
 
    /**
     *     
     *
     * @param         $data   The data
     *
     * @return     boolean  ( description_of_the_return_value )
     */
    public function insert($data){
     
        if(is_array($data)){
            $keys = '';
            $values = '';
            foreach ($data as $key => $value) {
                $keys .= "`".$key."`,";
                $values .= "'".$value."',";
            }
            $keys = rtrim($keys,',');
            $values = rtrim($values,',');
        }
        $sql = "INSERT INTO `{$this->_table}`({$keys}) VALUES({$values})";
        mysqli_query(self::_instance,$sql);
        $insertId = mysqli_insert_id($this->_db);
        return $insertId;
    }
 
    /**
     *     
     *
     * @param        $data   The data
     *
     * @return       ( description_of_the_return_value )
     */
    public function update($data){
        
        if(is_array($data)){
            $dataStr = '';
            foreach ($data as $key => $value) {
                $dataStr .= "`".$key."`='".$value."',";
            }
            $dataStr = rtrim($dataStr,',');
        }
        $sql = "UPDATE `{$this->_table}` SET {$dataStr} {$this->_where} {$this->_order} {$this->_limit}";
        $res = $this->execute($sql);
        return $res;
    }
 
    /**
     *     
     *
     * @return       ( description_of_the_return_value )
     */
    public function delete(){
       
        $sql = "DELETE FROM `{$this->_table}` {$this->_where}";
        $res = $this->execute($sql);
        return $res;
    }

}