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应用程序来获取Web服务器的状态信息
Oct 09 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
PHP输入流php://input介绍
Sep 18 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
php将session放入memcached的设置方法
Feb 14 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
Dec 21 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
May 09 PHP
Yii2实现自定义独立验证器的方法
May 05 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 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读取flv文件的播放时间长度
2009/09/03 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
php静态成员方法和静态的成员属性的使用方法
2017/10/26 PHP
php无限极分类实现方法分析
2019/07/04 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
jquery 插件开发备注
2010/08/27 Javascript
采用call方式实现js继承
2014/05/20 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
python删除过期文件的方法
2015/05/29 Python
改进Django中的表单的简单方法
2015/07/17 Python
python处理html转义字符的方法详解
2016/07/01 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
荣耀商城:HIHONOR
2020/11/03 全球购物
甜品店的创业计划书范文
2014/01/02 职场文书
护理目标管理责任书
2014/07/25 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
电影建党伟业观后感
2015/06/01 职场文书
单位收入证明范本
2015/06/18 职场文书
实习报告范文
2019/07/30 职场文书
mysql配置SSL证书登录的实现
2021/09/04 MySQL