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中的正规表达式(二)
Oct 09 PHP
用PHP函数解决SQL injection
Dec 09 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
解析htaccess伪静态的规则
Jun 18 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
PHP实现文件上传和多文件上传
Dec 24 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
Yii Framework框架使用PHPExcel组件的方法示例
Jul 24 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
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
php微信开发之音乐回复功能
2018/06/14 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
学习ExtJS fit布局使用说明
2009/10/08 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
2013/03/28 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
浅谈Node模块系统及其模式
2017/11/17 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
python批量识别图片指定区域文字内容
2019/04/30 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
python中的测试框架
2020/11/13 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
人事部专员岗位职责
2014/03/04 职场文书
函授生自我鉴定
2014/03/25 职场文书
公休请假条
2014/04/11 职场文书
会计毕业生自荐书
2014/06/12 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
详解Python中*args和**kwargs的使用
2022/04/07 Python