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


Posted in PHP onMarch 11, 2019

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

声明:

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

<?php
// 数据库连接类
class DB{
 //私有的属性
 private static $dbcon=false;
 private $host;
 private $port;
 private $user;
 private $pass;
 private $db;
 private $charset;
 private $link;
 //私有的构造方法
 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}");
  }
  //私有的克隆
  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程序设计有所帮助。

PHP 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
Jul 31 PHP
深入PHP运行环境配置的详解
Jun 04 PHP
php发送post请求的三种方法
Feb 11 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
PHP图片加水印实现方法
May 06 PHP
php while循环控制的简单实例
May 30 PHP
postfixadmin忘记密码后的修改密码方法详解
Jul 20 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
thinkphp分页集成实例
Jul 24 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
Smarty模板语法详解
Jul 20 PHP
PHP实现的杨辉三角求解算法分析
Mar 11 #PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 #PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 #PHP
PHP join()函数用法与实例讲解
Mar 11 #PHP
PHP lcfirst()函数定义与用法
Mar 08 #PHP
浅谈PHPANALYSIS提取关键字
Mar 08 #PHP
PHP levenshtein()函数用法讲解
Mar 08 #PHP
You might like
如何做到多笔资料的同步
2006/10/09 PHP
简单的PHP图片上传程序
2008/03/27 PHP
php中的观察者模式
2010/03/24 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
Javascript 读后台cookie代码
2008/09/15 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
python复制文件的方法实例详解
2015/05/22 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
Python3实现计算两个数组的交集算法示例
2019/04/03 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
美国内衣第一品牌:Hanes(恒适)
2016/07/29 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
爱心捐款倡议书
2014/04/14 职场文书
弘扬民族精神演讲稿
2014/05/07 职场文书
疾病防治方案
2014/05/31 职场文书
我为党旗添光彩演讲稿
2014/09/13 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书
学校团代会开幕词
2016/03/04 职场文书
作文之亲情600字
2019/09/23 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
Python函数式编程中itertools模块详解
2021/09/15 Python
分享几个实用的CSS代码块
2022/06/10 HTML / CSS