config.php文件 数据库参数
<?php $dsn=array( 'localhost'=> '127.0.0.1', 'username' => 'root', 'password' => 'root', 'charset' => 'utf8', 'dbname' => "advanced", 'type' => 'Mysql', );DB.class.php 工厂定义
<?php include 'MysqlDB.class.php'; /** * */ class DBFactory{ public static function create($dsn){ $name=$dsn['type']."DB"; return new $name($dsn); } }DB.interface.php 接口文件
<?php interface DB{ //增加 arr为传入的数组 public function insert($arr); //查询字段 public function select($where); //条件查询 public function where($where,$con); //添加and查询条件 public function andwhere($where); //添加or查询条件 public function orwhere($where); //分组查询 public function groupBy($params); //having查询 public function having($params); //增加筛选条件 public function addhaving($params); //排序 public function orderBy($params); //limit public function limit($offset,$start=0); //修改 public function update($arr,$where='',$con='AND'); //删除 public function delete($del,$con='AND'); //执行sql语句 public function sqlquery($sql); //获取一条数据 public function One(); //获取所有数据 public function All(); //获取新增id public function getlastInsertId(); //获取影响条数 public function getRow(); //获取结果集 public function get(); }MysqlDB.class.php 封装的方法
<?php include 'DB.interface.php'; /** * */ class MysqlDB implements DB{ //表名称 public $table; //当前数据库对象 public $db; //sql语句查询条件 public $condition; //查询出的对象结果集 public $obj; public function __construct(){ } //按照配置连接数据库 public function connect($dsn){ $localhost=$dsn['localhost']; $username=$dsn['username']; $password=$dsn['password']; $dbname=$dsn['dbname']; $mysqli = new mysqli("$localhost","$username","$password","$dbname"); if ($mysqli->connect_error) { die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error); } $charset=$dsn['charset']; $mysqli->query("set names $charset"); $this->db=$mysqli; return $this; } //执行sql语句 public function sqlquery($sql){ $res=$this->db->query($sql); $arr=array(); while ($row = mysqli_fetch_assoc($res)){ $arr[]=$row; } return $arr; } //执行查询所有数组 public function All(){ $result=$this->obj; //var_dump($result);die; $arr=array(); while ($row = mysqli_fetch_assoc($result)){ $arr[]=$row; } return $arr; } //获取一条数据 public function One(){ $result=$this->obj; $row = mysqli_fetch_assoc($result); return $row; } //获取新增id public function getlastInsertId(){ $id=$this->db->insert_id; return $id; } //获取影响行数 public function getRow(){ $num=$this->db->affected_rows; return $num; } //执行条件语句,存储结果集 public function get(){ $sql=$this->condition; //echo $sql;die; $res=$this->db->query($sql); $this->obj=$res; return $this; } //添加数据 public function insert($arr){ foreach ($arr as $k => $val) { $str.=','."'$val'"; } $sql="insert into $this->table values(null$str)"; $mysqli=$this->db; $mysqli->query($sql); $this->db=$mysqli; $id=$this->getlastInsertId(); if ($id) { return $id; }else{ return false; } } /* *删除数据 */ public function delete($del,$con='AND'){ if (is_array($del)) { foreach ($del as $k => $val) { $str.=" $con".' '.$k."="."'$val'"; } $str=substr($str,4); }else{ $str=$del; } $sql="delete from $this->table where $str"; $mysqli=$this->db; $mysqli->query($sql); $this->db=$mysqli; $num=$this->getRow(); if ($num) { return $num; }else{ return false; } } //修改数据 public function update($arr,$where='',$con='AND'){ if (is_array($arr)) { foreach ($arr as $k => $val) { $update.=",".$k."="."'$val'"; } $update=substr($update,1); }else{ $update=$arr; } $str=$this->params($where,$con); $sql="update $this->table set $update where $str"; $mysqli=$this->db; $mysqli->query($sql); $this->db=$mysqli; $num=$this->getRow(); if ($num !== 'false') { return $num; }else{ return false; } } //查询字段 public function select($where='*'){ $sql="select $where from $this->table"; $this->condition=$sql; return $this; } //查询条件,拼接查询语句 /* *array('name'=>"zhanmg"); == name =zhang *['in','id',1,10] == id in (1,10) *['like','name','zhang'] == name like '%zhang%' *['between','id',1,10] == id between 1 and 10 *['>','id',1] == id>1 *['<','id',10] == id<10 */ public function params($where,$con){ if (!is_array($where)) { $str=$where; }else{ $arr=array(); foreach ($where as $key => $value) { if (is_int($key)) { $arr[$key]=$value; }else{ $str.=" $con".' '.$key."="."'$value'"; } } if (!empty($arr)) { $type=$arr[0]; switch ($type) { case 'in': for ($i=2; $i <count($arr) ; $i++) { $ids.=','.$arr[$i]; } $ids=substr($ids,1); $str= $arr[1].' '."in ($ids)"; break; case 'like': $str= $arr[1].' '."like '%".$arr[2]."%'"; break; case '>': $str= $arr[1].' '."> ".$arr[2]; break; case '<': $str= $arr[1].' '."< ".$arr[2]; break; case 'between': $str= $arr[1].' '."between ".$arr[2].' and '.$arr[3]; break; } }else{ if ($con=='AND') { $str=substr($str,4); }else{ $str=substr($str,3); } } } return $str; } //构建条件语句 public function where($where,$con='AND'){ $str=$this->params($where,$con); $sql=$this->condition; $sql.=" where $str"; $this->condition=$sql; //echo $sql;die; return $this; } //添加and查询条件 public function andwhere($where){ $str=$this->params($where,$con); $sql=$this->condition; $sql.=" AND $str"; $this->condition=$sql; //echo $sql;die; return $this; } //添加or查询条件 public function orwhere($where){ $str=$this->params($where,$con); $sql=$this->condition; $sql.=" OR $str"; $this->condition=$sql; return $this; } //查询条数限制 public function limit($offset,$start=0){ $sql=$this->condition; $sql.=" limit $start,$offset"; $this->condition=$sql; return $this; } //分组查询 public function groupBy($params){ $sql=$this->condition; $sql.=" GROUP BY $params"; $this->condition=$sql; return $this; } //筛选 public function having($params,$con='AND'){ $str=$this->params($params,$con); $sql=$this->condition; $sql.=" having ($str)"; $this->condition=$sql; return $this; } //增加筛选条件 public function addhaving($params,$con='AND'){ $str=$this->params($params,$con); $sql=$this->condition; $sql.=" AND ($str)"; $this->condition=$sql; return $this; } //排序 public function orderBy($params){ $sql=$this->condition; $sql.=" ORDER BY $params"; $this->condition=$sql; return $this; } }test.php 调用
<?php include 'config.php'; include 'DB.class.php'; $mysql=DBFactory::create($dsn); $mysql->table='admin'; $db=$mysql->connect($dsn); //$a=$mysql->db; /*query()*/ //$sql="select * from admin"; //$res=$mysql->connect($dsn)->sqlquery($sql); /*insert*/ // $arr=array( // 'username'=>'zhangsan', // 'pwd'=>'123456', // ); // $res=$db->insert($arr); /**delete*/ // $delwhere=array( // 'id'=>14, // ); // $delwhere="id in(12,13,15)"; // $res=$db->delete($delwhere); /**update*/ $arr=array( 'username'=>'zhangsan', 'pwd'=>'123456', ); $where=array( 'id'=>11, ); // $arr=['in','id',1,3,4,10] ; // $arr1=['like','username','ang']; // //$arr=['between','id',1,10]; // //$arr=['>','id',1]; // //$arr=['<','id',10] $res=$db->update($arr,$where); // $res=$db->select()->where($arr)->having($arr1)->orderBy("id desc")->limit(5)->get()->All(); var_dump($res);