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 网络开发详解之远程文件包含漏洞
Apr 25 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
Jul 18 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
PHP ? EasyUI DataGrid 资料取的方式介绍
Nov 07 PHP
基于php常用正则表达式的整理汇总
Jun 08 PHP
使用PHP curl模拟浏览器抓取网站信息
Oct 28 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP面向对象中new self()与 new static()的区别浅析
Aug 17 PHP
详解thinkphp中的volist标签
Jan 15 PHP
php post换行的方法
Feb 03 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
消息持续发送的完整例子
2006/10/09 PHP
jQuery 性能优化手册 推荐
2010/02/23 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
用Javascript实现Windows任务管理器的代码
2012/03/27 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
javascript最基本的函数汇总
2015/06/25 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python处理RSTP视频流过程解析
2020/01/11 Python
python数据爬下来保存的位置
2020/02/17 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
《满井游记》教学反思
2014/02/26 职场文书
八荣八耻的活动方案
2014/08/16 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python实现生活常识解答机器人
2021/06/28 Python
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android