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中改变图片的尺寸大小的代码
Jul 17 PHP
PHP Error与Logging函数的深入理解
Jun 03 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
Jul 05 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
PHP将URL转换成短网址的算法分享
Sep 13 PHP
php实现base64图片上传方式实例代码
Feb 22 PHP
thinkphp 验证码 的使用小结
May 07 PHP
php扩展开发入门demo示例
Sep 23 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
PHP 在线翻译函数代码
2009/05/07 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
javascript实现json页面分页实例代码
2014/02/20 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
JS与HTML结合实现流程进度展示条思路详解
2017/09/03 Javascript
JavaScript模块详解
2017/12/18 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python中获取对象信息的方法
2015/04/27 Python
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python实现简易端口扫描器代码实例
2017/03/15 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
python爬虫可以爬什么
2020/06/16 Python
详解Python多线程下的list
2020/07/03 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
CSS3关于z-index不生效问题的解决
2020/02/19 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
德国电子商城:ComputerUniverse
2017/04/21 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
英语翻译系毕业生求职信
2013/09/29 职场文书
家长会邀请书
2014/01/25 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
2014庆六一活动方案
2014/03/02 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
元旦促销方案
2014/03/15 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
工程部部长岗位职责
2015/02/12 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL