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 19 PHP
php中的一个中文字符串截取函数
Feb 14 PHP
PHP连接access数据库
Mar 27 PHP
php中将数组存到文件里的实现代码
Jan 19 PHP
二招解决php乱码问题
Mar 25 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
php文件缓存方法总结
Mar 16 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
javascript淘宝主图放大镜功能
2016/10/20 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
vue中使用极验验证码的方法(附demo)
2019/12/04 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
2019/06/25 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
应届护士推荐信
2013/11/16 职场文书
高级方案规划工程师岗位职责
2013/11/29 职场文书
关于保护环境的建议书
2014/05/13 职场文书
2014年车间工作总结
2014/11/21 职场文书
旷课检讨书范文
2015/01/27 职场文书
中小企业员工手册范本
2015/05/14 职场文书
python实现简单倒计时功能
2021/04/21 Python
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
JavaScript ES6的函数拓展
2022/01/18 Javascript
oracle重置序列从0开始递增1
2022/02/28 Oracle
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android