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 相关文章推荐
数据库的日期格式转换
Oct 09 PHP
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
php桌面中心(二) 数据库写入
Mar 11 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
PHP分页函数代码(简单实用型)
Dec 02 PHP
php如何调用webservice应用介绍
Nov 24 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
Mar 07 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
PHP PDOStatement::fetch讲解
Jan 31 PHP
thinkphp5框架扩展redis类方法示例
May 06 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
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
javascript中用星号表示预录入内容的实现代码
2011/01/08 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
bootstrap vue.js实现tab效果
2017/02/07 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
python字符串常用方法
2018/06/14 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
Python 处理图片像素点的实例
2019/01/08 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
python写一个随机点名软件的实例
2019/11/28 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
新东网科技Java笔试题
2012/07/13 面试题
高级销售求职信
2014/02/21 职场文书
民间个人借款协议书
2014/09/30 职场文书
通知的写法
2015/04/23 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书