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 相关文章推荐
PHP中MD5函数使用实例代码
Jun 07 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
php网站地图生成类示例
Jan 13 PHP
php代码审计比较有意思的例子
May 07 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
May 04 PHP
yii框架redis结合php实现秒杀效果(实例代码)
Oct 26 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
实现php删除链表中重复的结点
Sep 27 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
Oct 17 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执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
利用php操作memcache缓存的基础方法示例
2017/08/02 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
angularJS提交表单(form)
2015/02/09 Javascript
使用jQuery制作浮动工具栏的实例分享
2016/05/13 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
Python列表生成器的循环技巧分享
2015/03/06 Python
python实现图像识别功能
2018/01/29 Python
Python入门学习指南分享
2018/04/11 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
PyQt5多线程刷新界面防假死示例
2019/12/13 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
皮肤科医师岗位职责
2013/12/04 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
公民授权委托书
2014/10/15 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2016年质量月活动总结报告
2016/04/05 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
详解MySQL 用户权限管理
2021/04/20 MySQL
Python+Tkinter打造签名设计工具
2022/04/01 Python