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 相关文章推荐
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
鸡肋的PHP单例模式应用详解
Jun 03 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 PHP
WHOOPS PHP调试库的使用
Sep 29 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微信公众号开发模式详解
2016/11/28 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
实测jquery data()如何存值
2013/08/18 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
2013/12/10 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
2018/02/02 jQuery
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
介绍Python中的__future__模块
2015/04/27 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
简单了解django文件下载方式
2020/02/10 Python
python两种注释用法的示例
2020/10/09 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
iostream与iostream.h的区别
2015/01/16 面试题
高中自我评价分享
2013/12/05 职场文书
高中语文课后反思
2014/04/27 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
云冈石窟导游词
2015/02/04 职场文书
英文辞职信范文
2015/05/13 职场文书
贷款担保书范本
2015/09/22 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
Django如何与Ajax交互
2021/04/29 Python
JavaScript ES6的函数拓展
2022/01/18 Javascript