PHP封装的数据库链式操作类

一、类文件代码:

<?php
/*
 * by:leoyi
 * 2018-7-15
 * 自己特意封装的一个链式操作数据库的方法,
 * 主要用于写原生或smarty开发时操作数据库的时候可以用到。
 *
 * link: 330168885@qq.com
 * */
    require_once 'config.php';

 class Database
 {
    private $name; //数据库表名
    private $where='';
    private $order='';
    private $limit='';
    private $conn;
    private $pre_tag;

    public function __construct($msg) {
       !empty($msg['pre_tag']) ? $this->pre_tag = $msg['pre_tag'] : ''; //表前缀
       !empty($msg['link']) ? $link = $msg['link'] : die("no config database link!");
       !empty($msg['username']) ? $username = $msg['username'] : die("no config database username!");
       !empty($msg['password']) ? $password = $msg['password'] : die("no config database password!");
       !empty($msg['port']) ? $port = $msg['port'] : die("no config database port!");
       !empty($msg['dbname']) ? $dbname = $msg['dbname'] : die("no config database dbname!");
       !empty($msg['charset']) ? $charset = $msg['dbname'] : 'utf-8';

       $conn = mysqli_connect($link.":".$port,$username,$password,$dbname) or die(" link database error!! ");
       mysqli_query($conn,'set names '.$charset);
       $this->conn = $conn;
    }
    //操作的数据表名
    function name($name){
       $this->name = $this->pre_tag.$name;
       return $this;
    }
    //where操作
    function where($where)
    {
       $this->where = $where;
       return $this;
    }
    //排序
    function order($order)
    {
       $this->order = $order;
       return $this;
    }

    //查询条数
    function limit($limit)
    {
       $this->limit = $limit;
       return $this;
    }
    //插入
    function insert($data){
       !empty($this->name) ? $name = $this->name : die("not choice db ");
       if(empty($data)) die("not insert data! ");

       $keys = '';
       $vals = '';
       foreach($data as $key => $val){
          $keys .= $key.",";
          $vals .= "'".$val."',";
       }
       $keys = rtrim($keys, ",");
       $vals = rtrim($vals, ",");
       $sql = "insert into $name($keys) values($vals)";
       return $this->query($sql);
    }
    //查询
    function select(){
       !empty($this->name)? $name = $this->name:die("not choice db ");
       $where = !empty($this->where)? ' where '.$this->where:" ";
       $order =!empty($this->order)?' order by '.$this->order: " ";
       $limit = !empty($this->limit)? ' limit '.$this->limit: " ";

       $sql = "select * from $name ".$where.$order.$limit;
       $res = $this->query($sql);
       $data= [];
       while($row = mysqli_fetch_array($res,true)){
          $data[] = $row;
       }
       return $data;
    }

    //删除
    function delete(){
       !empty($this->name) ? $name = $this->name : die("not choice db ");
       !empty($this->where) ? $where = $this->where : die("not choice condition ");

       $sql = 'delete from '.$name.' where '.$where;
       return $this->query($sql);
    }

    //修改表
    public function update($data){
       !empty($this->name) ? $name = $this->name : die("not choice db ");
       !empty($this->where) ? $where = $this->where : die("not choice condition ");

       $condition = '';
       foreach ($data as $key => $val)
       {
          $condition .= $key."=".$val.",";
       }
       $condition = rtrim($condition, ",");
       if (empty($condition))
       {
          die("not update condition ");
       }
       $sql = "update $name set $condition where $where ";
       return $this->query($sql);
    }

    //执行sql
    public function query($sql){
       !empty($this->conn) ? $conn = $this->conn : die("not link db ");
       $result = mysqli_query($conn,$sql);
       if(!$result){

          die("query sql error !");
       }else{
          return $result;
       }
    }
 }

二、类的使用说明:

$configs['mysql'] = [
   'charset'=>'utf-8', //数据库编码
   'link'=>'localhost', //数据库链接
   'username'=>'root',  //数据库用户名
   'password'=>'root', //数据库密码
   'port'=>3306, //端口号
   'dbname' => 'leoyi',//选择的数据库
   'pre_tag'=>'l_' // 数据库表前缀
];
$db = new Database($configs['mysql']);

//简单的数据库查评论信息:
$list = $db->name("comment")->where("id>1")->limit(10)->select();

//插入数据
$data = [
    'nick'=>'leoyi',  // key对应的是数据库字段名,值对应的是存储的信息
    'comment'=>"你好", //这里都是评论时候用到的格式
];
$db->name("comment")->insert($data);

//修改数据
$data = [
    'nick'=>'leoyi',  // key对应的是数据库字段名,值对应的是存储的信息
    'comment'=>"你好", //这里都是评论时候用到的格式
];
$db->name("comment")->where("id=1")->update($data);  

//删除数据
 $db->name("comment")->where("id=1")->delete();

以上只是我简单写的一个类方法,更多的操作可以自己在类里面不断的累加,可能里面存在部分方法有问题,但是修改不难。


其他问题或者使用过程存在问题都可以联系到我:330168885@qq.com //同Q号。