栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP封装的数据库模型Model类完整示例

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP封装的数据库模型Model类完整示例

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

tableName = PRE.$tableName;
     //获取当前数据表中有哪些字段
     $this->getFields();
 }
 
 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("表名错误");
     }
 }
 
 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);
 }
 
 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);
 }
    
    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);
    }
    
 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 [];
    }
    
    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 [];
    }
    
    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;
    }
    
    public function field($field)
    {
      //判断字段是否存在
      if (empty($filed)){
 return $this;
      }
      $this->field = $field;
      return $this;
    }
    
    public function _sql()
    {
      return $this->sql;
    }
    
    public function where($where)
    {
      $this->where = "where ".$where;
      return $this;
    }
    
    public function order($order)
    {
      $this->order = "order by ".$order;
      return $this;
    }
    
    public function limit($limit)
    {
      $this->limit = "limit ".$limit;
      return $this;
    }
}

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/39317.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号