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(2)――PHP类型
Feb 15 PHP
php 强制下载文件实现代码
Oct 28 PHP
PHP面向对象之旅:深入理解static变量与方法
Jan 06 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
Feb 18 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
php计算整个mysql数据库大小的方法
Jun 19 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
Yii2.0预定义的别名功能小结
Jul 04 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
laravel5.6实现数值转换
Oct 23 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
php下的原生ajax请求用法实例分析
Feb 28 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动态图像的创建
2006/10/09 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
取得父标签
2006/11/14 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
vue中注册自定义的全局js方法
2019/11/15 Javascript
JS实现打字游戏
2019/12/17 Javascript
Vue 图片压缩并上传至服务器功能
2020/01/15 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
Python文件和流(实例讲解)
2017/09/12 Python
python保存数据到本地文件的方法
2018/06/23 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
python实现移动木板小游戏
2020/10/09 Python
TripAdvisor越南:全球领先的旅游网站
2017/09/21 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
上海期货面试题
2014/01/31 面试题
医学毕业生自荐信
2013/10/11 职场文书
买房委托公证书
2014/04/08 职场文书
公司年会开场白
2015/06/01 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
银行培训心得体会范文
2016/01/09 职场文书
Nginx 匹配方式
2022/05/15 Servers