• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP模型Model类封装数据库操作示例

    本文实例讲述了PHP模型Model类封装数据库操作。分享给大家供大家参考,具体如下:

    ?php
      //引入配置文件
      include "./config.php";
      class Model
      {
        public $link;//存储连接对象
        public $tableName = "";//存储表名
        public $field = "*";//存储字段
        public $allFields = [];//存储当前表所有字段
        public $where = "";//存储where条件
        public $order = "";//存储order条件
        public $limit = "";//存储limit条件
        /**
         * 构造方法 初始化
         * @param string $tableName 要操作的表名
         */
        public function __construct($tableName)
        {
          //1.存储操作的表名
          $this->tableName = PRE.$tableName;
          //2.初始化连接数据库
          $this->getConnect();
          //3.获得当前表的所有字段
          $this->getFields();
        }
        /**
         * 初始化连接数据库操作
         */
        public function getConnect()
        {
          //1.连接数据库
          $this->link = mysqli_connect(HOST,USER,PWD,DB,PORT);
          //2.判断连接
          if (mysqli_connect_errno($this->link)>0){
            echo mysqli_connect_error($this->link);
            exit;
          }
        }
        /**
         * 执行并发送SQL(查询)
         * @param string $sql 要查询的SQL语句
         * @return array 返回查询出来的二维数组
         */
        public function query($sql)
        {
          $result = mysqli_query($this->link,$sql);
          if ($result  mysqli_num_rows($result)>0) {
           $arr = [];
           while($row = mysqli_fetch_assoc($result)){
              $arr[] = $row;
           }
          }
        return $arr;
        }
        /**
         * 获取当前表的所有字段
         */
        public function getFields()
        {
          //查看表结构
          $sql = "desc {$this->tableName}";
          //执行并发送SQL
          $result = $this->query($sql);
          $fields = [];
          foreach ($result as $k => $v){
            $fields[] = $v['Field'];
          }
          $this->allFields = $fields;
        }
        /**
         * 执行并发送SQL语句(增删改)
         * @param string $sql 要执行的SQL语句
         * @return bool|int|string 添加成功则返回上一次操作id,删除修改操作则返回true,失败则返回false
         */
        public function exec($sql)
        {
          $result = mysqli_query($this->link,$sql);
          //处理结果集
          if ($result  mysqli_affected_rows($this->link)>0){
            //判断是否为添加操作,是则返回上一次执行的id
            if (mysqli_insert_id($this->link)){
              return mysqli_insert_id($this->link);
            }
            //删除修改操作成功则返回true
            return true;
          }else{
            //未执行成功则返回false
            return false;
          }
        }
        /**
         * 查询多条数据
         */
        public function select()
        {
          $sql = "select {$this->field} from {$this->tableName} {$this->where} {$this->order} {$this->limit}";
          //执行并发送SQL
          return $this->query($sql);
        }
        /**
         * 查询一条数据
         * @param string $id 要查询的id
         * @return array 返回一条数据
         */
        public function find($id="")
        {
          //判断id是否存在
          if (empty($id)){
            $where = $this->where;
          }else{
            $where = "where id={$id}";
          }
          $sql = "select {$this->field} from {$this->tableName} {$where} limit 1";
          //执行并发送sql
          $result = $this->query($sql);
          //返回一条数据
          return $result[0];
        }
        /**
         * 设置要查询的字段信息
         * @param string $field 要查询的字段
         * @return object 返回自己,保证连贯操作
         */
        public function field($field)
        {
          //判断字段是否存在
          if (empty($field)){
            return $this;
          }
          $this->field = $field;
          return $this;
        }
        /**
         * 统计总条数
         * @return int 返回总数
         */
        public function count()
        {
          //准备SQL语句
          $sql = "select count(*) as total from {$this->tableName} limit 1";
          $result = $this->query($sql);
          //返回总数
          return $result[0]['total'];
        }
        /**
         * 添加操作
         * @param array $data 要添加的数组
         * @return bool|int|string 添加成功则返回上一次操作的id,失败则返回false
         */
        public function add($data){
          //判断是否是数组
          if (!is_array($data)){
            return $this;
          }
          //判断是否全是非法字段
          if (empty($data)){
            die("非法数据");
          }
          //过滤非法字段
          foreach ($data as $k => $v){
            if (!in_array($k,$this->allFields)){
              unset($data[$k]);
            }
          }
          //将数组中的键取出
          $keys = array_keys($data);
          //将数组中取出的键转为字符串拼接
          $key = implode(",",$keys);
          //将数组中的值转化为字符串拼接
          $value = implode("','",$data);
          //准备SQL语句
          $sql = "insert into {$this->tableName} ({$key}) values('{$value}')";
          //执行并发送SQL
          return $this->exec($sql);
        }
        /**
         * 删除操作
         * @param string $id 要删除的id
         * @return bool 删除成功则返回true,失败则返回false
         */
        public function delete($id="")
        {
          //判断id是否存在
          if (empty($id)){
            $where = $this->where;
          }else{
            $where = "where id={$id}";
          }
          $sql = "delete from {$this->tableName} {$where}";
          echo $sql;
          //执行并发送
          return $this->exec($sql);
        }
        /**
         * 修改操作
         * @param array $data 要修改的数组
         * @return bool 修改成功返回true,失败返回false
         */
        public function update($data){
          //判断是否是数组
          if (!is_array($data)){
            return $this;
          }
          //判断是否是全是非法字段
          if(empty($data)){
            die("非法数据");
          }
          $str = "";
          //过滤非法字段
          foreach ($data as $k => $v){
            if ($k == "id"){
              $where = "where id={$v}";
              unset($data[$k]);
            }
            if (in_array($k,$this->allFields)){
              $str .= "{$k}='{$v}',";
            }else{
              unset($data[$k]);
            }
          }
          //判断是否有条件
          if (empty($this->where)){
            die("请输入条件");
          }
          //去掉最右侧的逗号
          $str = rtrim($str,",");
          $sql = "update {$this->tableName} set {$str} {$this->where}";
          return $this->exec($sql);
        }
        /**
         * where条件
         * @param string $where 输入的where条件
         * @return $this 返回自己,保证连贯操作
         */
        public function where($where)
        {
          $this->where = "where ".$where;
          return $this;
        }
        /**
         * order排序条件
         * @param string $order 以此为基准进行排序
         * @return $this 返回自己,保证连贯操作
         */
        public function order($order)
        {
          $this->order = "order by ".$order;
          return $this;
        }
        /**
         * limit条件
         * @param string $limit 输入的limit条件
         * @return $this 返回自己,保证连贯操作
         */
        public function limit($limit)
        {
          $this->limit = "limit ".$limit;
          return $this;
        }
        /**
         * 析构方法
         * 关闭数据库连接
         */
        public function __destruct()
        {
          mysqli_close($this->link);
        }
      }
     //自行调试
     $a = new Model("表名");
     // var_dump($a->find(3));
     // var_dump($a->select());
      // var_dump($a->count());
      // $res = $a->select();
      //var_dump($res);
    ?>
    
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php+mysqli数据库程序设计技巧总结》、《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php封装db类连接sqlite3数据库的方法实例
    • php db类库进行数据库操作
    • PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
    • PHP数据库表操作的封装类及用法实例详解
    • PHP封装的PDO数据库操作类实例
    • PHP数据库处理封装类实例
    • php简单数据库操作类的封装
    • PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
    • PHP封装的mysqli数据库操作类示例
    • PHP封装的数据库模型Model类完整示例【基于PDO】
    • PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
    上一篇:php中pcntl_fork创建子进程的方法实例
    下一篇:PHP封装的数据库模型Model类完整示例【基于PDO】
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP模型Model类封装数据库操作示例 PHP,模型,Model,类,封装,数据库,