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版自动生成文章摘要
Jul 23 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
PHP 设置MySQL连接字符集的方法
Jan 02 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
php计算一个文件大小的方法
Mar 30 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
PHP常见字符串操作函数与用法总结
Mar 04 PHP
YII框架常用技巧总结
Apr 27 PHP
php设计模式之单例模式用法经典示例分析
Sep 20 PHP
用php定义一个数组最简单的方法
Oct 04 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作的文本留言本的例子(三)
2006/10/09 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
jQuery 性能优化手册 推荐
2010/02/23 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
AngularJs 60分钟入门基础教程
2016/04/03 Javascript
AngularJS 中的Promise --- $q服务详解
2016/09/14 Javascript
js实现右键菜单功能
2016/11/28 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
pycharm安装图文教程
2017/05/02 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
波兰补充商店:Muscle Power
2018/10/29 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
升职自荐信范文
2013/10/05 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
四个太阳教学反思
2014/02/01 职场文书
数控个人求职信范文
2014/02/03 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
个人求职信格式范文
2015/03/20 职场文书
springboot中一些比较常用的注解总结
2021/06/11 Java/Android