PHP基于单例模式实现的数据库操作基类


Posted in PHP onJanuary 15, 2016

本文实例讲述了PHP基于单例模式实现的数据库操作基类。分享给大家供大家参考,具体如下:

配置文件:

<?php
$db = array(
    'host'=>'localhost',
    'user'=>'root',
    'password'=>'',
    'database'=>'test',
)
?>

php 数据库基类:

<?php
class db {
  public $conn;
  public static $sql;
  public static $instance=null;
  private function __construct(){
    require_once('db.config.php');
    $this->conn = mysql_connect($db['host'],$db['user'],$db['password']);
    if(!mysql_select_db($db['database'],$this->conn)){
      echo "失败";
    };
    mysql_query('set names utf8',$this->conn);
  }
  public static function getInstance(){
    if(is_null(self::$instance)){
      self::$instance = new db;
    }
    return self::$instance;
  }
  /**
   * 查询数据库
   */
  public function select($table,$condition=array(),$field = array()){
    $where='';
    if(!empty($condition)){
      foreach($condition as $k=>$v){
        $where.=$k."='".$v."' and ";
      }
      $where='where '.$where .'1=1';
    }
    $fieldstr = '';
    if(!empty($field)){
      foreach($field as $k=>$v){
        $fieldstr.= $v.',';
      }
       $fieldstr = rtrim($fieldstr,',');
    }else{
      $fieldstr = '*';
    }
    self::$sql = "select {$fieldstr} from {$table} {$where}";
    $result=mysql_query(self::$sql,$this->conn);
    $resuleRow = array();
    $i = 0;
    while($row=mysql_fetch_assoc($result)){
      foreach($row as $k=>$v){
        $resuleRow[$i][$k] = $v;
      }
      $i++;
    }
    return $resuleRow;
  }
  /**
   * 添加一条记录
   */
   public function insert($table,$data){
    $values = '';
    $datas = '';
    foreach($data as $k=>$v){
      $values.=$k.',';
      $datas.="'$v'".',';
    }
    $values = rtrim($values,',');
    $datas  = rtrim($datas,',');
    self::$sql = "INSERT INTO {$table} ({$values}) VALUES ({$datas})";
    if(mysql_query(self::$sql)){
      return mysql_insert_id();
    }else{
      return false;
    };
   }
   /**
   * 修改一条记录
   */
  public function update($table,$data,$condition=array()){
    $where='';
    if(!empty($condition)){
      foreach($condition as $k=>$v){
        $where.=$k."='".$v."' and ";
      }
      $where='where '.$where .'1=1';
    }
    $updatastr = '';
    if(!empty($data)){
      foreach($data as $k=>$v){
        $updatastr.= $k."='".$v."',";
      }
      $updatastr = 'set '.rtrim($updatastr,',');
    }
    self::$sql = "update {$table} {$updatastr} {$where}";
    return mysql_query(self::$sql);
  }
  /**
   * 删除记录
   */
   public function delete($table,$condition){
    $where='';
    if(!empty($condition)){
      foreach($condition as $k=>$v){
        $where.=$k."='".$v."' and ";
      }
      $where='where '.$where .'1=1';
    }
    self::$sql = "delete from {$table} {$where}";
    return mysql_query(self::$sql);
   }
  public static function getLastSql(){
    echo self::$sql;
  }
}
$db = db::getInstance();
//$list = $db->select('demo',array('name'=>'tom','password'=>'ds'),array('name','password'));
//echo $db->insert('demo',array('name'=>'三水点靠木','password'=>'123'));
//echo $db->update('demo',array("name"=>'xxx',"password"=>'123'),array('id'=>1));
echo $db->delete('demo',array('id'=>'2'));
db::getLastSql();
echo "<pre>";
?>

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

PHP 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
文件上传类
Oct 09 PHP
mysql4.1以上版本连接时出现Client does not support authentication protocol问题解决办法
Mar 15 PHP
php 禁止页面缓存输出
Jan 07 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
php实现cookie加密的方法
Mar 10 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
php集成开发环境详解
Sep 24 PHP
如何判断微信付款码和支付宝付款码
Apr 01 PHP
Linux安装配置php环境的方法
Jan 14 #PHP
PHP实现QQ登录实例代码
Jan 14 #PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 #PHP
详解HTTP Cookie状态管理机制
Jan 14 #PHP
在php中设置session用memcache来存储的方法总结
Jan 14 #PHP
thinkphp实现图片上传功能
Jan 13 #PHP
PHP实现伪静态方法汇总
Jan 13 #PHP
You might like
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
php微信开发之上传临时素材
2016/06/24 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
jQuery 性能优化指南 (1)
2009/05/21 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
Python if语句知识点用法总结
2018/06/10 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
2020/06/03 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
环保倡议书怎么写
2014/05/16 职场文书
践行三严三实心得体会(2016推荐篇)
2016/01/06 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
初一数学教学反思
2016/02/17 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL