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!数据库
May 03 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
php操作mysqli(示例代码)
Oct 28 PHP
php计算两个日期相差天数的方法
Mar 14 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP输出多个元素的排列或组合的方法
Mar 14 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
用PHP做了一个领取优惠券活动的示例代码
Jul 05 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
PHP设计模式之组合模式定义与应用示例
Feb 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
资料注册后发信小技巧
2006/10/09 PHP
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
Vue.js实现移动端短信验证码功能
2017/03/29 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
在Python的Django框架中包装视图函数
2015/07/20 Python
python框架django基础指南
2016/09/08 Python
numpy中的高维数组转置实例
2018/04/17 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
网络编辑岗位职责
2014/03/18 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
教师节表彰会主持词
2015/07/06 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
在Python中如何使用yield
2021/06/07 Python
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android