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&amp;mysql(一)
Oct 09 PHP
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
PHP安全配置详细说明
Sep 26 PHP
PHP提取字符串中的图片地址[正则表达式]
Nov 12 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
PHP中soap的用法实例
Oct 24 PHP
php将一维数组转换为每3个连续值组成的二维数组
May 06 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 PHP
php将字符串转换为数组实例讲解
May 05 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
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
iis6手工创建网站后无法运行php脚本的解决方法
2017/06/08 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
JS实现百度网盘任意文件强制下载功能
2018/08/31 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
vue+element表格导出为Excel文件
2019/09/26 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
Python中函数eval和ast.literal_eval的区别详解
2017/08/10 Python
zookeeper python接口实例详解
2018/01/18 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
解决python虚拟环境切换无效的问题
2020/04/30 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
化验室技术员岗位职责
2013/12/24 职场文书
研讨会主持词
2014/04/02 职场文书
和谐社区口号
2014/06/19 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL