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来自动调用不同服务器上的flash
Oct 09 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
php去除html标记的原生函数详解
Jan 27 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
PHP 500报错的快速解决方法
Dec 14 PHP
详解PHP 二维数组排序保持键名不变
Mar 06 PHP
Laravel基础-关于引入公共文件的两种方式
Oct 18 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实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
php实现对短信验证码发送次数的限制实例讲解
2021/03/04 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
微信小程序实现时间预约功能
2018/11/27 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
跟老齐学Python之变量和参数
2014/10/10 Python
python决策树之CART分类回归树详解
2017/12/20 Python
python使用tornado实现登录和登出
2018/07/28 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
2019/08/22 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
店长岗位职责
2013/11/21 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
校运会口号
2014/06/18 职场文书
学习党代会心得体会
2014/09/05 职场文书
运动会稿件100字
2014/09/24 职场文书
公司合并协议书范本
2014/09/30 职场文书
新年寄语2016
2015/08/17 职场文书
高中数学教学反思范文
2016/02/18 职场文书
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
Win11如何设置右键单击显示所有选项?Win11右键单击显示所有选项设置教程
2022/04/08 数码科技