侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例

ThinkPHP  /  管理员 发布于 8年前   218

本文实例讲述了PHP封装类似thinkphp连贯操作数据库Db类与简单应用。分享给大家供大家参考,具体如下:

 'localhost',        'dbname'  => 'test',        'username' => 'root',        'password' => '1234'      );//数据库配置  /**   * 构造函数,连接数据库   */  public function __construct(){    $link = $this->_db;    if(!$link){      $db = mysqli_connect($this->_configs['hostname'],$this->_configs['username'],$this->_configs['password'],$this->_configs['dbname']);      mysqli_query($db,"set names utf8");      if(!$db){        $this->ShowException("错误信息".mysqli_connect_error());      }      $this->_db = $db;    }  }  /**   * 获取所有数据   *   * @param     $table The table   *   * @return   boolean All.   */  public function getAll($table=null){    $link = $this->_db;    if(!$link)return false;    $sql = "SELECT * FROM {$table}";    $data = mysqli_fetch_all($this->execute($sql));    return $data;  }  public function table($table){    $this->_table = $table;    return $this;  }  /**   * 实现查询操作   *   * @param   string  $fields The fields   *   * @return   boolean ( description_of_the_return_value )   */  public function select($fields="*"){    $fieldsStr = '';    $link = $this->_db;    if(!$link)return false;    if(is_array($fields)){      $fieldsStr = implode(',', $fields);    }elseif(is_string($fields)&&!empty($fields)){      $fieldsStr = $fields;    }    $sql = "SELECT {$fields} FROM {$this->_table} {$this->_where} {$this->_order} {$this->_limit}";    $data = mysqli_fetch_all($this->execute($sql));    return $data;  }  /**   * order排序   *   * @param   string  $order The order   *   * @return   boolean ( description_of_the_return_value )   */  public function order($order=''){    $orderStr = '';    $link = $this->_db;    if(!$link)return false;    if(is_string($order)&&!empty($order)){      $orderStr = "ORDER BY ".$order;    }    $this->_order = $orderStr;    return $this;  }  /**   * where条件   *   * @param   string $where The where   *   * @return    ( description_of_the_return_value )   */  public function where($where=''){    $whereStr = '';    $link = $this->_db;    if(!$link)return $link;    if(is_array($where)){      foreach ($where as $key => $value) {        if($value == end($where)){          $whereStr .= "`".$key."` = '".$value."'";        }else{          $whereStr .= "`".$key."` = '".$value."' AND ";        }      }      $whereStr = "WHERE ".$whereStr;    }elseif(is_string($where)&&!empty($where)){      $whereStr = "WHERE ".$where;    }    $this->_where = $whereStr;    return $this;  }  /**   * group分组   *   * @param   string  $group The group   *   * @return   boolean ( description_of_the_return_value )   */  public function group($group=''){    $groupStr = '';    $link = $this->_db;    if(!$link)return false;    if(is_array($group)){      $groupStr = "GROUP BY ".implode(',',$group);    }elseif(is_string($group)&&!empty($group)){      $groupStr = "GROUP BY ".$group;    }    $this->_group = $groupStr;    return $this;  }  /**   * limit限定查询   *   * @param   string $limit The limit   *   * @return    ( description_of_the_return_value )   */  public function limit($limit=''){    $limitStr = '';    $link = $this->_db;    if(!$link)return $link;    if(is_string($limit)||!empty($limit)){      $limitStr = "LIMIT ".$limit;    }elseif(is_numeric($limit)){      $limitStr = "LIMIT ".$limit;    }    $this->_limit = $limitStr;    return $this;  }  /**   * 执行sql语句   *   * @param     $sql  The sql   *   * @return   boolean ( description_of_the_return_value )   */  public function execute($sql=null){    $link = $this->_db;    if(!$link)return false;    $res = mysqli_query($this->_db,$sql);    if(!$res){      $errors = mysqli_error_list($this->_db);      $this->ShowException("报错啦!
错误号:".$errors[0]['errno']."
SQL错误状态:".$errors[0]['sqlstate']."
错误信息:".$errors[0]['error']); die(); } return $res; } /** * 插入数据 * * @param $data The data * * @return boolean ( description_of_the_return_value ) */ public function insert($data){ $link = $this->_db; if(!$link)return false; if(is_array($data)){ $keys = ''; $values = ''; foreach ($data as $key => $value) { $keys .= "`".$key."`,"; $values .= "'".$value."',"; } $keys = rtrim($keys,','); $values = rtrim($values,','); } $sql = "INSERT INTO `{$this->_table}`({$keys}) VALUES({$values})"; mysqli_query($this->_db,$sql); $insertId = mysqli_insert_id($this->_db); return $insertId; } /** * 更新数据 * * @param $data The data * * @return ( description_of_the_return_value ) */ public function update($data){ $link = $this->_db; if(!$link)return $link; if(is_array($data)){ $dataStr = ''; foreach ($data as $key => $value) { $dataStr .= "`".$key."`='".$value."',"; } $dataStr = rtrim($dataStr,','); } $sql = "UPDATE `{$this->_table}` SET {$dataStr} {$this->_where} {$this->_order} {$this->_limit}"; $res = $this->execute($sql); return $res; } /** * 删除数据 * * @return ( description_of_the_return_value ) */ public function delete(){ $link = $this->_db; if(!$link)return $link; $sql = "DELETE FROM `{$this->_table}` {$this->_where}"; $res = $this->execute($sql); return $res; } /** * 异常信息输出 * * @param $var The variable */ private function ShowException($var){ if(is_bool($var)){ var_dump($var); }else if(is_null($var)){ var_dump(NULL); }else{ echo "
".print_r($var,true)."
"; } }}$db = new Db();//查询操作var_dump($db->table('user')->where('id > 2')->order('id desc')->limit('2,4')->select());//插入操作var_dump($db->table('user')->insert(array('username'=>'user','password'=>'pwd')));//更新操作var_dump($db->table('user')->where('id = 1')->update(array('username'=>'user1','password'=>'pwd1')));//删除操作var_dump($db->table('user')->where('id = 1')->delete());

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

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

您可能感兴趣的文章:

  • PHP实现的连贯操作、链式操作实例
  • PHP简单数据库操作类实例【支持增删改查及链式操作】
  • PHP三种方式实现链式操作详解
  • PHP对象链式操作实现原理分析
  • PHP实现链式操作的核心思想
  • PHP实现链式操作的原理详解
  • PHP实现链式操作的三种方法详解
  • php类自动装载、链式操作、魔术方法实现代码
  • thinkPHP5框架数据库连贯操作之cache()用法分析
  • thinkphp连贯操作实例分析
  • php链式操作的实现方式分析


  • 上一条:
    Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
    下一条:
    PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • thinkphp + mongodb项目中数据加载慢问题分析及解决(0个评论)
    • thinkphp6框架中封装redis操作类(0个评论)
    • thinkphp6框架中实现定时任务功能流程步骤(0个评论)
    • Thinkphp5.1框架中实现Session+Redis会话共享流程步骤(0个评论)
    • TP5框架版本5.0.10安全漏洞根据官方补丁修复,也是本站安全漏洞修复(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-12
    • 2018-01
    • 2018-02
    • 2020-03
    • 2021-07
    • 2021-12
    • 2022-05
    • 2022-06
    • 2022-09
    • 2023-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客