PHP单例模式简单用法示例


Posted in PHP onJune 23, 2017

本文实例讲述了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 self();
  }
    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 = '';
    $data = '';
    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 常用字符串函数总结
Mar 15 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
hessian 在PHP中的使用介绍
Dec 13 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
php实现的任意进制互转类分享
Jul 07 PHP
php实现微信发红包
Dec 05 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
php处理静态页面:页面设置缓存时间实例
Jun 22 #PHP
PHP使用redis消息队列发布微博的方法示例
Jun 22 #PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 #PHP
PHP简单装饰器模式实现与用法示例
Jun 22 #PHP
PHP实现的简单适配器模式示例
Jun 22 #PHP
php smtp实现发送邮件功能
Jun 22 #PHP
php实现页面纯静态的实例代码
Jun 21 #PHP
You might like
PHP基础教程(php入门基础教程)一些code代码
2013/01/06 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
JavaScript中的类型检查
2020/02/03 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python中import机制详解
2017/11/14 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
Giglio德国网上精品店:奢侈品服装和配件
2016/09/23 全球购物
方正Java笔试题
2014/07/03 面试题
机械设计专业应届生求职信
2013/11/21 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
团日活动总结书
2014/05/08 职场文书
计划生育标语
2014/06/23 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang