• 重庆“轮椅教师”高位截瘫仍坚守讲台 2019-07-07
  • 百度车联网携手宝马 合作伙伴全面升级为国际OEM厂商 2019-07-01
  • 全面从严治党永远在路上——辽宁代表团开放日侧记 2019-07-01
  • 【学习时刻】华侨大学黄日涵:“一带一路”盛会开启合作发展新篇章 2019-06-24
  • 秒变迷弟!吴建豪晒与甄子丹合影:偶像给我签名 2019-06-20
  • 军统头目戴笠留下哪些巨额遗产 令蒋介石身边人惊诧 2019-06-20
  • 初春喝藿香汤 解表化湿,散寒温经 2019-06-18
  • 新华时评:磋商,不等于反复折腾 2019-06-09
  • 天山特克斯峡谷 中国国家地理网 2019-06-08
  • 端午小长假珠海口岸将迎双向客流高峰 2019-06-08
  • 王朝崩塌!恒大半个月内双线出局 卡帅敲响下课警钟 2019-06-07
  • 一周人事:国务院发布任免刘伟当选北京市总工会主席 2019-06-07
  • 敞篷式设计 日产聆风Open Car官图发布 2019-06-06
  • 习近平为传统文化“代言” 2019-06-05
  • 奋力谱写新时代追赶超越新篇章——访陕西省委书记胡和平 2019-06-04
  • 香港赛马会彩讯网:PHP封装的数据库模型Model类完整示例【基于PDO】

    香港赛马会网站惠泽社绝杀八码 www.mwcrz.tw  更新时间:2019年03月14日 11:56:41   作者:小菜鸟有大梦想   我要评论

    这篇文章主要介绍了PHP封装的数据库模型Model类,结合实例形式分析了php基于PDO针对mysql数据库常见增删改查、统计、判断等相关操作封装与使用技巧,需要的朋友可以参考下

    本文实例讲述了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程序设计有所帮助。

    相关文章

    最新评论

  • 重庆“轮椅教师”高位截瘫仍坚守讲台 2019-07-07
  • 百度车联网携手宝马 合作伙伴全面升级为国际OEM厂商 2019-07-01
  • 全面从严治党永远在路上——辽宁代表团开放日侧记 2019-07-01
  • 【学习时刻】华侨大学黄日涵:“一带一路”盛会开启合作发展新篇章 2019-06-24
  • 秒变迷弟!吴建豪晒与甄子丹合影:偶像给我签名 2019-06-20
  • 军统头目戴笠留下哪些巨额遗产 令蒋介石身边人惊诧 2019-06-20
  • 初春喝藿香汤 解表化湿,散寒温经 2019-06-18
  • 新华时评:磋商,不等于反复折腾 2019-06-09
  • 天山特克斯峡谷 中国国家地理网 2019-06-08
  • 端午小长假珠海口岸将迎双向客流高峰 2019-06-08
  • 王朝崩塌!恒大半个月内双线出局 卡帅敲响下课警钟 2019-06-07
  • 一周人事:国务院发布任免刘伟当选北京市总工会主席 2019-06-07
  • 敞篷式设计 日产聆风Open Car官图发布 2019-06-06
  • 习近平为传统文化“代言” 2019-06-05
  • 奋力谱写新时代追赶超越新篇章——访陕西省委书记胡和平 2019-06-04
  • 财神捕鱼官方下载 赫塔费vs埃瓦尔 如何看懂分分彩走势图 北京赛车开奖结果记录 黄金武士走势图 极速十一选五赔率 重庆11选5计划群 魔兽世界单机版 吉林快3走势图表 北京赛车pk10开奖