PHP基于单例模式实现的mysql类


Posted in PHP onJanuary 09, 2016

本文实例讲述了PHP基于单例模式实现的mysql类。分享给大家供大家参考,具体如下:

<?php
defined('ACC')||exit('Access Denied');
// 封装mysql操作类,包括连接功能,及查询功能.
class mysql extends absdb{
  protected static $ins = null;
  protected $host; // 主机名
  protected $user; // 用户名
  protected $passwd; // 密码
  protected $db;   // 数据库名
  protected $port;  // 端口
  protected $conn = null;
  // 在内部操作,获得一个对象
  public static function getIns() {
    if(self::$ins === null) {
      self::$ins = new self();
    }
    $conf = conf::getIns();
    self::$ins->host = $conf->host;
    self::$ins->user = $conf->user;
    self::$ins->passwd = $conf->pwd;
    self::$ins->db = $conf->db;
    self::$ins->port = $conf->port;
    self::$ins->connect();
    self::$ins->select_db();
    self::$ins->setChar();
    return self::$ins;
  }
  // 不让外部做new操作,
  protected function __construct() {
  }
  // 连接数据库
  public function connect() {
    $this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port);
    if(!$this->conn) {
      $error = new Exception('数据库连不上',9);
      throw $error;
    }
  }
  // 发送sql查询
  public function query($sql) {
    $rs = mysql_query($sql,$this->conn);
    if(!$rs) {
      log::write($sql);
    }
    return $rs;
  }
  // 封装一个getAll方法
  // 参数:$sql
  // 返回: array,false
  public function getAll($sql) {
    $rs = $this->query($sql);
    if(!$rs) {
      return false;
    }
    $list = array();
    while($row = mysql_fetch_assoc($rs)) {
      $list[] = $row;
    }
    return $list;
  }
  // 封装一个getRow方法
  // 参数:$sql
  // 返回: array,false
  public function getRow($sql) {
    $rs = $this->query($sql);
    if(!$rs) {
      return false;
    }
    return mysql_fetch_assoc($rs);
  }
  // 封装一个getOne方法,
  // 参数: $sql
  // 返回: int,str(单一的值)
  public function getOne($sql) {
    $rs = $this->query($sql);
    if(!$rs) {
      return false;
    }
    $tmp = mysql_fetch_row($rs);
    return $tmp[0];
  }
  // 封装一个afftect_rows()方法
  // 参数:无
  // 返回 int 受影响行数
  public function affected_rows() {
    return mysql_affected_rows($this->conn);
  }
  // 返回最新生成的auto_increment列的值
  public function last_id() {
    return mysql_insert_id($this->conn);
  }
  // 选库函数
  public function select_db() {
    $sql = 'use ' . $this->db;
    return $this->query($sql);
  }
  // 设置字符集的函数
  public function setChar() {
    $sql = 'set names utf8';
    return $this->query($sql);
  }
  // 自动生成insert语句,update语句并执行
  public function autoExecute($data,$table,$act='insert',$where='') {
    if($act == 'insert') {
      $sql = 'insert into ' . $table . ' (';
      $sql .= implode(',',(array_keys($data)));
      $sql .= ') values (\'';
      $sql .= implode("','",array_values($data));
      $sql .= "')";
    } else if($act == 'update') {
      if(!trim($where)) {
        return false;
      }
      $sql = 'update ' . $table . ' set ';
      foreach($data as $k=>$v) {
        $sql .= $k;
        $sql .= '=';
        $sql .= "'".$v."',";
      }
      $sql = substr($sql,0,-1);
      $sql .= ' where ';
      $sql .= $where;
    } else {
      return false;
    }
    //return $sql;
    return $this->query($sql);
  }
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
XAMPP安装与使用方法详细解析
Nov 27 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php下Memcached入门实例解析
Jan 05 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
Zend Framework教程之Zend_Layout布局助手详解
Mar 04 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
关于PHP定时发送服务的解决办法
Apr 23 PHP
PHP封装的简单连接MongoDB类示例
Feb 13 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 PHP
thinkPHP查询方式小结
Jan 09 #PHP
thinkPHP中多维数组的遍历方法
Jan 09 #PHP
ThinkPHP中html:list标签用法分析
Jan 09 #PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 #PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 #PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 #PHP
yii2中使用Active Record模式的方法
Jan 09 #PHP
You might like
杏林同学录(四)
2006/10/09 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
stripos函数知识点实例分享
2019/02/11 PHP
Javascript MD4
2006/12/20 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
html向js方法传递参数具体实现
2013/08/08 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
bootstrap手风琴折叠示例代码分享
2017/05/22 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
js实现图片放大展示效果
2017/08/30 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
[54:09]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Linux系统下升级pip的完整步骤
2021/01/31 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
运动会入场词100字
2014/02/06 职场文书
劲霸男装广告词改编版
2014/03/21 职场文书
法律系毕业生求职信
2014/05/28 职场文书
工程合作意向书范本
2015/05/09 职场文书
甲午风云观后感
2015/06/02 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
python基础之类方法和静态方法
2021/10/24 Python
使用scrapy实现增量式爬取方式
2022/06/21 Python