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超级全局变量
Jan 26 PHP
通达OA公共代码 php常用检测函数
Dec 14 PHP
php中拷贝构造函数、赋值运算符重载
Jul 25 PHP
php Session存储到Redis的方法
Nov 04 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
Jul 28 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
phpnow php探针环境检测代码
Nov 04 PHP
php获取当月最后一天函数分享
Feb 02 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 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
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
js怎么判断flash swf文件是否加载完毕
2014/08/14 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
js自定义trim函数实现删除两端空格功能
2018/02/09 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
零基础之Node.js搭建API服务器的详解
2019/03/08 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
利用python绘制正态分布曲线
2021/01/04 Python
德国家具折扣店:POCO
2020/02/28 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
如何在Oracle中查看各个表、表空间占用空间的大小
2015/10/31 面试题
ktv中秋节活动方案
2014/01/30 职场文书
会计毕业自我鉴定
2014/02/05 职场文书
期末学生评语大全
2014/04/24 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript