<?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; } } ?>