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

5年以前  |  阅读数:320 次  |  编程语言:PHP 

本文实例讲述了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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例