PHP基于单例模式实现的mysql类

 更新时间:2016年01月09日 15:17:16   作者:rogerzhanglijie  
这篇文章主要介绍了PHP基于单例模式实现的mysql类,涉及PHP基于单例模式封装对MySQL数据库的连接及查询相关技巧,需要的朋友可以参考下

本文实例讲述了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+mysql数据库操作入门教程》、《PHP基于pdo操作数据库技巧总结》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • php实现通用的从数据库表读取数据到数组的函数实例

    php实现通用的从数据库表读取数据到数组的函数实例

    这篇文章主要介绍了php实现通用的从数据库表读取数据到数组的函数,实例分析了php实现通用的数据库查询技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • 利用PHP扩展Xhprof分析项目性能实践教程

    利用PHP扩展Xhprof分析项目性能实践教程

    XHProf是Facebook开发的性能调试工具,能帮助直观的统计显示PHP程序执行中各方法函数调用次数和消耗时间,以方便我们排查性能瓶颈并进行调优。下面这篇文章主要给大家介绍了关于利用PHP扩展Xhprof分析项目性能实践的相关资料,需要的朋友可以参考下
    2018-09-09
  • 两种php去除二维数组的重复项方法

    两种php去除二维数组的重复项方法

    这篇文章主要介绍了两种php去除二维数组的重复项方法,大家可以进行比较看哪一种更适合自己,需要的朋友可以参考下
    2015-11-11
  • php JWT在web端中的使用方法教程

    php JWT在web端中的使用方法教程

    这篇文章主要给大家介绍了关于php JWT在web端中的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • PHP实现逐行删除文件右侧空格的方法

    PHP实现逐行删除文件右侧空格的方法

    这篇文章主要介绍了PHP实现逐行删除文件右侧空格的方法,涉及php针对文件的打开、逐行读取、rtrim函数删除右侧空格及文件保存等技巧,需要的朋友可以参考下
    2015-12-12
  • php定时删除文件夹下文件(清理缓存文件)

    php定时删除文件夹下文件(清理缓存文件)

    有的时候网站缓存文件夹里生成的临时文件越来越多,而长时间不清理就会造成文件夹下有上万个缓存文件,可能会使ftp工具多无法进入其文件夹。使临时文件无法删除
    2013-01-01
  • PHP8新特性之JIT案例讲解

    PHP8新特性之JIT案例讲解

    这篇文章主要介绍了PHP8新特性之JIT案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • PHP 编写的 25个游戏脚本

    PHP 编写的 25个游戏脚本

    PHP 是一种易于使用、易于学习且可以广泛获取的编程语言。它非常适合开发在各种游戏中可以使用的简单脚本。
    2009-05-05
  • php类自动加载器实现方法

    php类自动加载器实现方法

    这篇文章主要介绍了php类自动加载器实现方法,涉及php针对文件的读取、判断及字符串操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • php数组总结篇(一)

    php数组总结篇(一)

    php下经常用到的数组函数
    2008-09-09

最新评论