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学习之运算符相关概念
Jun 09 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
Sep 23 PHP
探讨php define()函数及defined()函数使用详解
Jun 09 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
PHP基于imap获取邮件实例
Nov 11 PHP
PHP解析RSS的方法
Mar 05 PHP
简单谈谈favicon
Jun 10 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 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生成html分页列表的代码
2007/03/18 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
JavaScript中常用的运算符小结
2012/01/18 Javascript
JavaScript中的object转换成number或string规则介绍
2014/12/31 Javascript
JavaScript中日期的相关操作方法总结
2015/10/24 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
JS 通过系统时间限定动态添加 select option的实例代码
2016/06/09 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
vue实现放大镜效果
2020/09/17 Javascript
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
三八节主持词
2014/03/17 职场文书
优秀教师演讲稿
2014/05/06 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
中秋节随笔
2015/08/15 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL