• 在庆祝海南建省办经济特区30周年大会上的讲话 2019-10-07
  • 俄罗斯世界杯F组:球迷风采 2019-09-24
  • 彭于晏廖凡曝姜文“精神洁癖” 2019-09-24
  • 苏州大学研究生支教团网上众筹资助留守儿童 2019-09-23
  • 湖北政务微信排行榜第187期出炉 交警类公号表现亮眼 2019-09-19
  • 【奋斗吧2018】风电检修工——荒原上的“听风者” 2019-08-31
  • 母亲节又送康乃馨?送这样的健康佳品才走心 2019-08-30
  • [酷]此文已经把马克思理论、边际理论、人类需求层次理论、生物学理论、心理学理论、社会管理学理论等理论在哲学层面完美融合了! 2019-08-26
  • 兰芝雪纱修颜气垫隔离霜 2019-07-27
  • “鹊桥”中继星顺利进入使命轨道运行 2019-07-27
  • 超越舆情管理的360度信息决策 2019-07-22
  • 视频陶然居变形记:从路边小饭馆到全国餐饮十强 2019-07-21
  • 防震减灾事业发展的重要理论成果 2019-07-20
  • 珠宝配美人!李冰冰大片衣着性感秀身段 2019-07-20
  • 机器人也能拥有“情商”?这个可以有 2019-07-19
  • 香港赛马会网站939333:PHP封装的数据库模型Model类完整示例【基于PDO】

     更新时间:2019年03月14日 11:56:41   作者:小菜鸟有大梦想   我要评论
    这篇文章主要介绍了PHP封装的数据库模型Model类,结合实例形式分析了php基于PDO针对mysql数据库常见增删改查、统计、判断等相关操作封装与使用技巧,需要的朋友可以参考下

    香港赛马会网站惠泽社绝杀八码 www.mwcrz.tw 本文实例讲述了PHP封装的数据库模型Model类。分享给大家供大家参考,具体如下:

    <?php
        //引入配置文件
        include "../Config/config.php";
        class Model extends PDO
        {
            protected $tableName = "";//存储表名
            protected $sql = "";//存储最后执行的SQL语句
            protected $limit = "";//存储limit条件
            protected $order = "";//存储order排序条件
            protected $field = "*";//存储要查询的字段
            protected $where = "";//存储where条件
            protected $allFields = [];//存储当前表的所有字段
            /**
             * 构造方法 初始化
             * @param string $tableName 要操作的表名
             */
            public function __construct($tableName)
            {
                //连接数据库
                parent::__construct('mysql:host='.HOST.';dbname='.DB.';charset=utf8;port='.PORT,USER,PWD);
                //存储表名
                $this->tableName = PRE.$tableName;
                //获取当前数据表中有哪些字段
                $this->getFields();
            }
            /**
             * 获取当前表的所有字段
         * @return array 成功则返回一维数组字段
             */
            public function getFields()
            {
                //查看当前表结构
                $sql = "desc {$this->tableName}";
                $res = $this->query($sql);//返回pdo对象
              //var_dump($res);
                if ($res) {
                    $arr = $res->fetchAll(2);
                    //var_dump($arr);
                    //从二维数组中取出指定下标的列
                    $this->allFields =    array_column($arr,"Field");
                    return $this->allFields;
                } else {
                    die("表名错误");
                }
            }
            /**
             * 添加操作
             * @param array $data 要添加的数组
             * @return int 返回受影响行数
             */
            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}')";
                $this->sql = $sql;
                //执行并发送SQL,返回受影响行数
                return (int)$this->exec($sql);
            }
            /**
             * 删除操作
             * @param string $id 要删除的id
             * @return int 返回受影响行数
             */
            public function delete($id="")
            {
                //判断id是否存在
                if (empty($id)) {
                    $where = $this->where;
                }else{
                    $where = "where id={$id}";
                }
                $sql = "delete from {$this->tableName} {$where}";
          $this->sql = $sql;
                //执行并发送SQL,返回受影响行数
                return (int)$this->exec($sql);
            }
        /**
         * 修改操作
         * @param array $data 要修改的数组
         * @return int 返回受影响行数
         */
        public function update($data)
        {
          //判断是否是数组
          if (!is_array($data)){
            return $this;
          }
          //判断是否全是非法字段
          if (empty($data)) {
            die('全是非法字段');
          }
          $str = "";
          //过滤非法字段
          foreach ($data as $k=>$v) {
            //字段为id时,判断id是否存在的
            if ($k == "id"){
              $this->where = "where id={$v}";
              unset($data[$k]);
              continue;
            }
            //若字段不为id,则过滤后再拼接成set字段
            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}";
          //echo $sql;
          $this->sql = $sql;
          return (int)$this->exec($sql);
        }
        /**
         * 查询多条数据
         * @return array 成功返回二维数组,失败返回空数组
         */
            public function select()
        {
              $sql = "select {$this->field} from {$this->tableName} {$this->where} {$this->order} {$this->limit}";
          $this->sql = $sql;
          //执行SQL,结果集是一个对象
              $res = $this->query($sql);
              //判断是否查询成功,
          if ($res){
            //成功返回二维数组
            return $res->fetchAll(2);
          }
          //失败返回空数组
          return [];
        }
        /**
         * 查询一条数组
         * @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} {$this->order} limit 1";
          $this->sql = $sql;
          //执行sql,结果集为对象
          $res = $this->query($sql);
          //判断是否查询成功
          if ($res){
            //成功则返回一条数据(一维数组)
            $result = $res->fetchAll(2);
            return $result[0];
          }
          //失败返回空数组
          return [];
        }
        /**
         * 统计总数目
         * @return int 返回总数
         */
        public function count()
        {
          $sql = "select count(*) as total from {$this->tableName} {$this->where} limit 1";
          $this->sql = $sql;
          //执行SQL,结果集为对象
          $res = $this->query($sql);
          //处理结果集
          if ($res){
           $result = $res->fetchAll(2);
           //var_dump($result);
            return $result[0]["total"];
          }
          return 0;
        }
        /**
         * 设置要查询的字段信息
         * @param string $field 要查询的字段
         * @return object 返回自己,保证连贯操作
         */
        public function field($field)
        {
          //判断字段是否存在
          if (empty($filed)){
            return $this;
          }
          $this->field = $field;
          return $this;
        }
        /**
         * 获取最后执行的sql语句
         * @return string sql语句
         */
        public function _sql()
        {
          return $this->sql;
        }
        /**
         * where条件
         * @param string $where 要输入的where条件
         * @return object 返回自己,保证连贯操作
         */
        public function where($where)
        {
          $this->where = "where ".$where;
          return $this;
        }
        /**
         * order条件
         * @param string $order 要输入的order条件
         * @return object 返回自己,保证连贯操作
         */
        public function order($order)
        {
          $this->order = "order by ".$order;
          return $this;
        }
        /**
         * limit条件
         * @param string $limit 要输入的limit条件
         * @return object 返回自己,保证连贯操作
         */
        public function limit($limit)
        {
          $this->limit = "limit ".$limit;
          return $this;
        }
    }
    
    

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

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

    相关文章

    • 通用PHP动态生成静态HTML网页的代码

      通用PHP动态生成静态HTML网页的代码

      最近研究PHP的一些开发技术,发现PHP有很多ASP所没有的优秀功能,可以完成一些以前无法完成的功能,例如动态生成HTML静态页面,以减少服务器CPU的负载,提高用户访问的速度。
      2010-03-03
    • 有关JSON以及JSON在PHP中的应用

      有关JSON以及JSON在PHP中的应用

      简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。
      2010-04-04
    • PHP编程获取各个时间段具体时间的方法

      PHP编程获取各个时间段具体时间的方法

      这篇文章主要介绍了PHP编程获取各个时间段具体时间的方法,结合实例形式分析了基于date与strtotime函数进行日期时间运算的相关操作技巧,需要的朋友可以参考下
      2017-05-05
    • php使用parse_url和parse_str解析URL

      php使用parse_url和parse_str解析URL

      本文主要向大家介绍了php中2个解析URL的方法(parse_url和parse_str),以及这2种方法的简介和用法,十分全面,推荐给有需要的小伙伴们。
      2015-02-02
    • php函数的常用方法及注意之处小结

      php函数的常用方法及注意之处小结

      为了方便ide的管理及代码提示功能,我们在所有函数命名时使用fun_开头
      2011-07-07
    • php抽象方法和抽象类实例分析

      php抽象方法和抽象类实例分析

      这篇文章主要介绍了php抽象方法和抽象类,结合实例形式分析了php抽象方法和抽象类的概念、功能、定义与使用方法,需要的朋友可以参考下
      2016-12-12
    • PHP安全性漫谈

      PHP安全性漫谈

      本文所讨论的安全性环境是在Linux+Apache+Mysql+PHP。超出此范围的安全性问题不在本文范畴之内
      2012-06-06
    • PHP实现文件上传和多文件上传

      PHP实现文件上传和多文件上传

      这篇文章主要介绍了PHP实现文件上传和多文件上传的相关资料,还为大家分享了解决如何修改PHP上传文件的大小限制问题的方法,需要的朋友可以参考下
      2015-12-12
    • 学习PHP的数组总结【经验】

      学习PHP的数组总结【经验】

      这篇文章主要介绍了学习PHP的数组总结【经验】,需要的朋友可以参考下
      2016-05-05
    • php操作JSON格式数据的实现代码

      php操作JSON格式数据的实现代码

      php操作JSON格式数据的实现代码,需要的朋友可以参考下。
      2011-12-12

    最新评论

  • 在庆祝海南建省办经济特区30周年大会上的讲话 2019-10-07
  • 俄罗斯世界杯F组:球迷风采 2019-09-24
  • 彭于晏廖凡曝姜文“精神洁癖” 2019-09-24
  • 苏州大学研究生支教团网上众筹资助留守儿童 2019-09-23
  • 湖北政务微信排行榜第187期出炉 交警类公号表现亮眼 2019-09-19
  • 【奋斗吧2018】风电检修工——荒原上的“听风者” 2019-08-31
  • 母亲节又送康乃馨?送这样的健康佳品才走心 2019-08-30
  • [酷]此文已经把马克思理论、边际理论、人类需求层次理论、生物学理论、心理学理论、社会管理学理论等理论在哲学层面完美融合了! 2019-08-26
  • 兰芝雪纱修颜气垫隔离霜 2019-07-27
  • “鹊桥”中继星顺利进入使命轨道运行 2019-07-27
  • 超越舆情管理的360度信息决策 2019-07-22
  • 视频陶然居变形记:从路边小饭馆到全国餐饮十强 2019-07-21
  • 防震减灾事业发展的重要理论成果 2019-07-20
  • 珠宝配美人!李冰冰大片衣着性感秀身段 2019-07-20
  • 机器人也能拥有“情商”?这个可以有 2019-07-19
  • 什么叫有规律排列 重庆老时时采彩开奖 pk10人工1期计划在线 白小姐36码必出 豹子的豹可以组什么 欢乐二人麻将免费下载 时时彩定位胆技巧 必赢客幸运飞艇计划 11选5有稳赚的方法吗 欢乐生肖走势图彩经网