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中simplexml_load_string函数使用说明
Jan 01 PHP
PHP学习 变量使用总结
Mar 24 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
Symfony2 session用法实例分析
Feb 04 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
PHP实现可精确验证身份证号码的工具类示例
May 31 PHP
php实现微信发红包功能
Jul 13 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
77A一级收信机修理记
2021/03/02 无线电
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
2015/12/09 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
使用use注册Vue全局组件和全局指令的方法
2018/03/08 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
跟老齐学Python之折腾一下目录
2014/10/24 Python
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
2017/08/24 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
python模块常用用法实例详解
2019/10/17 Python
CSS3制作漂亮的照片墙的实现代码
2016/06/08 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
2012/10/30 HTML / CSS
施工安全协议书
2013/12/11 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
教师读书笔记
2015/06/29 职场文书
2016新春团拜会致辞
2015/08/01 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle
Pandas数据结构之Series的使用
2022/03/31 Python