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面向对象分析设计的经验原则
Sep 20 PHP
php AJAX实例根据邮编自动完成地址信息
Nov 23 PHP
ThinkPHP php 框架学习笔记
Oct 30 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
PHP中__get()和__set()的用法实例详解
Jun 04 PHP
php访问数组最后一个元素的函数end()用法
Mar 18 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 PHP
PHP的curl函数的用法总结
Feb 14 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
php实现统计IP数及在线人数的示例代码
Jul 22 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+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
2016/06/08 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
Vue实现动态响应数据变化
2017/04/28 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
python类继承用法实例分析
2014/10/10 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
Python 绘制可视化折线图
2020/07/22 Python
网络体系结构及协议的定义
2014/03/13 面试题
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
优秀教师主要事迹
2014/02/01 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
班主任经验交流会主持词
2014/04/01 职场文书
小学教师师德承诺书
2014/05/23 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
员工离职感谢信
2015/01/22 职场文书
学校实习推荐信
2015/03/27 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python