1. PHP DB 数据库连接类定义与用法示例

     更新时间:2019年03月11日 12:03:04   作者:moTzxx   我要评论

    这篇文章主要介绍了PHP DB 数据库连接类定义与用法,涉及php基于mysqli针对数据库的连接、增删改查等常见操作封装与使用技巧,需要的朋友可以参考下

    本文实例讲述了PHP DB 数据库连接类定义与用法。分享给大家供大家参考,具体如下:

    声明:

    近期观看了一节 PHP 消息队列视频,对于讲师WiconWang提供的代码,在此分享一下,希望能对爱学习的小伙伴有所帮助…

    <?php
    // 数据库连接类
    class DB{
     //?#25509;?#30340;属性
     private static $dbcon=false;
     private $host;
     private $port;
     private $user;
     private $pass;
     private $db;
     private $charset;
     private $link;
     //?#25509;?#30340;构造方法
     private function __construct(){
      $this->host = 'localhost';
      $this->port = '3306';
      $this->user = 'root';
      $this->pass = 'root';
      $this->db = 'imooc';
      $this->charset= 'utf8';
      //连接数据库
      $this->db_connect();
      //选择数据库
      $this->db_usedb();
      //设置字符集
      $this->db_charset();
      }
      //连接数据库
      private function db_connect(){
      $this->link=mysqli_connect($this->host.':'.$this->port,$this->user,$this->pass);
      if(!$this->link){
       echo "数据库连接失败<br>";
       echo "错误编码".mysqli_errno($this->link)."<br>";
       echo "错误信息".mysqli_error($this->link)."<br>";
       exit;
      }
      }
      //设置字符集
      private function db_charset(){
       mysqli_query($this->link,"set names {$this->charset}");
      }
      //选择数据库
      private function db_usedb(){
       mysqli_query($this->link,"use {$this->db}");
      }
      //?#25509;?#30340;克隆
      private function __clone(){
       die('clone is not allowed');
      }
      //公用的静态方法
      public static function getIntance(){
       if(self::$dbcon==false){
       self::$dbcon=new self;
       }
       return self::$dbcon;
      }
      //执行sql语句的方法
      public function query($sql){
       $res=mysqli_query($this->link,$sql);
       if(!$res){
       echo "sql语句执行失败<br>";
       echo "错误编码是".mysqli_errno($this->link)."<br>";
       echo "错误信息是".mysqli_error($this->link)."<br>";
       }
       return $res;
      }
      //获得最后一条记录id
      public function getInsertid(){
       return mysqli_insert_id($this->link);
      }
      /**
      * 查询某个字段
      * @param
      * @return string or int
      */
      public function getOne($sql){
       $query=$this->query($sql);
       return mysqli_free_result($query);
      }
      //获取一行记录,return array 一维数组
      public function getRow($sql,$type="assoc"){
       $query=$this->query($sql);
       if(!in_array($type,array("assoc",'array',"row"))){
        die("mysqli_query error");
       }
       $funcname="mysqli_fetch_".$type;
       return $funcname($query);
      }
      //获取一条记录,前置条件通过资源获取一条记录
      public function getFormSource($query,$type="assoc"){
      if(!in_array($type,array("assoc","array","row")))
      {
       die("mysqli_query error");
      }
      $funcname="mysqli_fetch_".$type;
      return $funcname($query);
      }
      //获取多条数据,二维数组
      public function getAll($sql){
       $query=$this->query($sql);
       $list=array();
       while ($r=$this->getFormSource($query)) {
       $list[]=$r;
       }
       return $list;
      }
      public function selectAll($table,$where,$fields='*',$order='',$skip=0,$limit=1000)
      {
           if(is_array($where)){
              foreach ($where as $key => $val) {
                if (is_numeric($val)) {
                  $condition = $key.'='.$val;
                }else{
                  $condition = $key.'=\"'.$val.'\"';
                }
              }
           } else {
            $condition = $where;
           }
           if (!empty($order)) {
             $order = " order by ".$order;
           }
           $sql = "select $fields from $table where $condition $order limit $skip,$limit";
           $query = $this->query($sql);
           $list = array();
           while ($r= $this->getFormSource($query)) {
             $list[] = $r;
           }
           return $list;
      }
       /**
       * 定义添加数据的方法
       * @param string $table 表名
       * @param string orarray $data [数据]
       * @return int 最新添加的id
       */
       public function insert($table,$data){
       //遍历数组,得到每一个字段和字段的值
       $key_str='';
       $v_str='';
       foreach($data as $key=>$v){
       // if(empty($v)){
       //  die("error");
       // }
        //$key的值是每一个字段s一个字段所对应的值
        $key_str.=$key.',';
        $v_str.="'$v',";
       }
       $key_str=trim($key_str,',');
       $v_str=trim($v_str,',');
       //判断数据是否为空
       $sql="insert into $table ($key_str) values ($v_str)";
       $this->query($sql);
      //返回上一次增加操做产生ID值
       return $this->getInsertid();
      }
      /*
      * 删除一条数据方法
      * @param1 $table, $where=array('id'=>'1') 表名 条件
      * @return 受影响的行数
      */
      public function deleteOne($table, $where){
       if(is_array($where)){
        foreach ($where as $key => $val) {
         $condition = $key.'='.$val;
        }
       } else {
        $condition = $where;
       }
       $sql = "delete from $table where $condition";
       $this->query($sql);
       //返回受影响的行数
       return mysqli_affected_rows($this->link);
      }
      /*
      * 删除多条数据方法
      * @param1 $table, $where 表名 条件
      * @return 受影响的行数
      */
      public function deleteAll($table, $where){
       if(is_array($where)){
        foreach ($where as $key => $val) {
         if(is_array($val)){
          $condition = $key.' in ('.implode(',', $val) .')';
         } else {
          $condition = $key. '=' .$val;
         }
        }
       } else {
        $condition = $where;
       }
       $sql = "delete from $table where $condition";
       $this->query($sql);
       //返回受影响的行数
       return mysqli_affected_rows($this->link);
      }
      /**
      * [修改操作description]
      * @param [type] $table [表名]
      * @param [type] $data [数据]
      * @param [type] $where [条件]
      * @return [type]
      */
      public function update($table,$data,$where,$limit=0){
       //遍历数组,得到每一个字段和字段的值
       $str='';
      foreach($data as $key=>$v){
       $str.="$key='$v',";
      }
      $str=rtrim($str,',');
       if(is_array($where)){
        foreach ($where as $key => $val) {
         if(is_array($val)){
          $condition = $key.' in ('.implode(',', $val) .')';
         } else {
          $condition = $key. '=' .$val;
         }
        }
       } else {
        $condition = $where;
       }
        if (!empty($limit)) {
          $limit = " limit ".$limit;
        }else{
          $limit='';
        }
      //修改SQL语句
      $sql="update $table set $str where $condition $limit";
      $this->query($sql);
      //返回受影响的行数
      return mysqli_affected_rows($this->link);
      }
    }
    ?>
    
    

    使用方法

    • 对DB类中__construct()中的配置信息,进行符合自己数据库的修改
    • include 引入DB类
    • 使用DB类中的方法需要先进行实例化,以插入数据为例:
    $db = DB::getIntance();
    $insert_data = ['order_id'=>'10010','order_amount' = '200.00','status'=> 1];
    $res = $db->insert('order_info',$insert_data);
    
    

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

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

    相关文章

    • php中字符集转换iconv函数使用总结

      php中字符集转换iconv函数使用总结

      这篇文章主要介绍了php中字符集转换iconv函数使用总结,本文同时介绍了mb_convert_encoding函数,需要的朋友可以参考下
      2014-10-10
    • PHP实现的文件上传类与用法详解

      PHP实现的文件上传类与用法详解

      这篇文章主要介绍了PHP实现的文件上传类与用法,结合实例形式较为详细的分析了PHP文件上传类的定义与具体使用方法,需要的朋友可以参考下
      2017-07-07
    • 使用 MySQL Date/Time 类型

      使用 MySQL Date/Time 类型

      上次对于 MySQL 方面已经有的一些总结,但是昨晚 wiLdGoose 兄说他也碰到同样的问题,但是无法解决。结果经过种种的假设和判断以后,到最后发现原?#35789;?Zend Studio 的时区配置问题(我狂汗ing)。而在和他讨论期间也谈到了很多关于 MySQL 的细节问题,还是记?#23478;?#19979;当作备忘比较好。这篇文章同时也做说服 wiLdGoose 兄用。
      2008-03-03
    • php中eval函数的危害与正?#26041;?#29992;方法

      php中eval函数的危害与正?#26041;?#29992;方法

      这篇文章主要介绍了php中eval函数的危害与正?#26041;?#29992;方法,需要的朋友可以参考下
      2014-06-06
    • 使用Huagepage和PGO来提升PHP7的执行性能

      使用Huagepage和PGO来提升PHP7的执行性能

      这篇文章主要介绍了使用Huagepage和PGO来提升PHP7的执行性能的相关方案,来自于注明的PHP开发组成员Laruence的相关研究,需要的朋友可以参考下
      2015-11-11
    • php实现的Timer页面运行时间监测类

      php实现的Timer页面运行时间监测类

      这篇文章主要介绍了php实现的Timer页面运行时间监测类,可实现按不同key检测不同的运行时间,需要的朋友可以参考下
      2014-09-09
    • PHP生成及获取JSON文件的方法

      PHP生成及获取JSON文件的方法

      这篇文章主要介绍了PHP生成及获取JSON文件的方法,涉及php针对json格式数据及文件相关操作技巧,需要的朋友可以参考下
      2016-08-08
    • PHP时间处理类操作示例

      PHP时间处理类操作示例

      这篇文章主要介绍了PHP时间处理类,结合实例形式分析了DateTime、DateTimeZone、DateInterval及DatePeriod等常用日期时间处理类简单操作技巧,需要的朋友可以参考下
      2018-09-09
    • PHP实现判断数组是一维、二维或几维的方法

      PHP实现判断数组是一维、二维或几维的方法

      这篇文章主要介绍了PHP实现判断数组是一维、二维或几维的方法,涉及php递归操作及数组相关判定技巧,需要的朋友可以参考下
      2017-02-02
    • PHP5.6?#21015;磂xcel表格文件操作示例

      PHP5.6?#21015;磂xcel表格文件操作示例

      这篇文章主要介绍了PHP5.6?#21015;磂xcel表格文件操作,结合实例形式分析了php5.6环境下使用PHPExcel插件针对Excel表格?#21015;?#30340;相关操作技巧,需要的朋友可以参考下
      2019-02-02

    最新评论

    山东群英会开奖查询