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 相关文章推荐
新浪新闻小偷
Oct 09 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
深入浅析PHP7.0新特征(五大新特征)
Oct 29 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
php中__toString()方法用法示例
Dec 07 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
Lumen timezone 时区设置方法(慢了8个小时)
Jan 20 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 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自定文件保存session的方法
2014/12/10 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
用jquery来定位
2007/02/20 Javascript
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
javascript 动态生成css代码的两种方法
2017/03/17 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
十个Python程序员易犯的错误
2015/12/15 Python
Python实现简单字典树的方法
2016/04/29 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
中学生校园广播稿
2014/01/16 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
单位授权委托书范本
2014/09/26 职场文书
送给客户微信问候语!
2019/07/04 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js