自定義php-mysqli工具加強類,支持鏈式調用

<?php
/*數據庫訪問類,支持鏈式訪問


*function table($table):表名
*function where($where):條件
*function field(...$field):查詢字段
*function order($order):排序方式
*function limit(...$limit):結果條數


功能函數:
*function item():查詢單條
*function lists():查詢多條
*function insert($data):插入數據
*function delete():刪除數據
*function update($data):更新數據
*function count():總記錄
*function my_index($arr,$index):自定義索引
*/
/*namespace Util\data;*/
class DbUtil{
  private $field = ' * ';
  private $table = '';
  private $where = '';
  private $order = '';
  private $limit = '';
  private $conn = '';
  

//靜態調用,免去了創造對象
  public static function getdb(){
    return $db = new self;
  }


/*  連接數據庫,靜態函數*/
  private static function db_conn(){
/*    建立連接
    值不要寫死,經過配置文件獲取*/
    $conn = mysqli_connect('118.193.141.119','sq_phpcl','fec897','sq_phpcl');
    if(!$conn){
      exit('Connection failed:'.mysqli_connect_error());
    }
    return $conn;
  }

/*  設定數據庫,鏈式訪問
  $table:'user'*/
  public function table($table){

    $this->table = ' '.$table.' ';    
    return $this;
  }

/*  設定條件 
  $where :array('x>1'=>null,'name'=>'chenglin',...)*/
  public function where($where){
    $temp = ' WHERE ';
    foreach($where as $value => $key){
      if($key!=null){
        $temp.=$value.'="'.$key.'" AND ';
      }else{
        $temp.=$value.' AND ';
      }     
    }
    $temp = substr($temp,0,-4);
    $this->where = $temp;
    return $this;
  }

/*  設定查詢字段
  ...:以數組的形式接收多個參數
  $field:'id,sex'*/
  public function field($field){
    $temp = '';
    $temp .= " {$field} ";

    $this->field = $temp;
    return $this;   
  }

/*  設置查詢排序排序方式
  $order :'id desc'*/
  public function order($order){
    $order = ' ORDER BY '.$order.' ';
    $this->order = $order;
    return $this;
  }

/*  設置查詢結果個數
  $limit: 0,3*/
  public function limit($limit1,$limit2 = ''){
    if($limit2==''){
      $limit = ' LIMIT '.$limit1.' ';
    }else{
      $limit = ' LIMIT '.$limit1.','.$limit2.' ';
    }
    $this->limit = $limit;
    return $this;
  }

/*  重置變量*/
  public function resetting(){
    $this->field = ' * ';
    $this->table = '';
    $this->where = '';
    $this->order = '';
    $this->limit = '';
  }





/*
  查詢一個結果
  返回數組*/
  public function item(){
    $conn = self::db_conn();
    $sql = "SELECT{$this->field}FROM{$this->table}{$this->where} LIMIT 1";

    if($result = mysqli_query($conn,$sql)){
      while($row = mysqli_fetch_assoc($result)){
        $rows[]  =  $row;
      }
      //清空屬性
      $this->resetting();
      return $rows[0];
      
    }
  }

/*  查詢結果集
  返回二維數組*/
  public function lists($index=''){
    $conn = self::db_conn();
    $sql = "SELECT{$this->field}FROM{$this->table}{$this->where}{$this->order}{$this->limit}";
    if($result = mysqli_query($conn,$sql)){
      while($row = mysqli_fetch_assoc($result)){
        $rows[]  =  $row;
      }
    
    }
    
    
    if($index!=''){
      $rows = $this->my_index($rows,$index);
    }
    //清空屬性
    $this->resetting(); 
    return  $rows;
  }

/*  插入數據
  返回插入的id號插入成功
  insert($data):array('name'=>'cl','sex'=>'男')*/
  public function insert($data){
    $conn = self::db_conn();
    $field = $values = [];
    foreach($data as $value=>$key){
      $field[] = $value;
      $values[]  = $key;
    }
    $sql = "INSERT INTO {$this->table} (".implode(',',$field).")VALUES('".implode("','",$values)."')";
    $insert_id = 0;
    if(mysqli_query($conn,$sql)){
      //插入的id
      $insert_id = mysqli_insert_id($conn);
    }
    $this->resetting(); 
    echo $sql;
    return $insert_id;
  }

/*  刪除數據
  返回1刪除成功*/
  public function delete(){
    //保險,防止所有被更改
    if($this->where == ''){
      $this->resetting(); 
      return 0;
    }
    $conn = self::db_conn();
    $sql = "DELETE FROM{$this->table}{$this->where}";
    $res = mysqli_query($conn,$sql);
    $this->resetting(); 
    return $res;
  }

/*  更新數據
  $data:array('name'=>cl,'age'=>18)
  返回1更新成功*/
  public function update($data){
    //保險,防止所有被更改
    if($this->where == ''){
      $this->resetting(); 
      return 0;
    }
    $conn = self::db_conn();
    $set = ' SET ';
    foreach($data as $value=>$key){
      $set.=$value."='".$key."' ,";
    }
    $set = rtrim($set,',');
    $sql = "UPDATE{$this->table}{$set}{$this->where}";
    $res = mysqli_query($conn,$sql);
    $this->resetting(); 
    return $res;
  }


/*  自定義索引
  $arr:查詢到的lists二維數組
  $index:$key的鍵*/
  public function my_index($arr,$index){
    $new_arr = [];
    foreach($arr as $value=>$key){
      $new_arr[$key[$index]] = $key;
    }
    return $new_arr;
  }

  //查詢記錄總數
  public function count(){
    $conn = self::db_conn();
    $sql = "SELECT * FROM {$this->table}{$this->where}";
    $count = 0;
    if($result = mysqli_query($conn,$sql)){
      //查詢總條數
      $count = mysqli_num_rows($result);
    }
    $this->resetting(); 
    return $count;  
  }

}
      
    
?>
相關文章
相關標籤/搜索