当前位置:首页 > PHP教程 > php类库 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-05 10:32:38 浏览: 评论:0 

这篇文章主要介绍了PHP基于单例模式实现的mysql类,涉及PHP基于单例模式封装对MySQL数据库的连接及查询相关技巧,需要的朋友可以参考下。

本文实例讲述了PHP基于单例模式实现的mysql类,分享给大家供大家参考,具体如下:

  1. <?php 
  2. defined('ACC')||exit('Access Denied'); 
  3. // 封装mysql操作类,包括连接功能,及查询功能. 
  4. class mysql extends absdb{ 
  5.   protected static $ins = null; 
  6.   protected $host// 主机名 
  7.   protected $user// 用户名 
  8.   protected $passwd// 密码 
  9.   protected $db;   // 数据库名 
  10.   protected $port;  // 端口 
  11.   protected $conn = null; 
  12.   // 在内部操作,获得一个对象 
  13.   public static function getIns() { 
  14.     if(self::$ins === null) { 
  15.       self::$ins = new self(); 
  16.     } 
  17.     $conf = conf::getIns(); 
  18.     self::$ins->host = $conf->host; 
  19.     self::$ins->user = $conf->user; 
  20.     self::$ins->passwd = $conf->pwd; 
  21.     self::$ins->db = $conf->db; 
  22.     self::$ins->port = $conf->port; 
  23.     self::$ins->connect(); 
  24.     self::$ins->select_db(); 
  25.     self::$ins->setChar(); 
  26.     return self::$ins
  27.   } 
  28.   // 不让外部做new操作, 
  29.   protected function __construct() { 
  30.   } 
  31.   // 连接数据库 
  32.   public function connect() { 
  33.     $this->conn = @mysql_connect($this->host,$this->user,$this->passwd,$this->port); 
  34.     if(!$this->conn) { 
  35.       $error = new Exception('数据库连不上',9); 
  36.       throw $error
  37.     } 
  38.   } 
  39.   // 发送sql查询 
  40.   public function query($sql) { 
  41.     $rs = mysql_query($sql,$this->conn); 
  42.     if(!$rs) { 
  43.       log::write($sql); 
  44.     } 
  45.     return $rs
  46.   } 
  47.   // 封装一个getAll方法 
  48.   // 参数:$sql 
  49.   // 返回: array,false 
  50.   public function getAll($sql) { 
  51.     $rs = $this->query($sql); 
  52.     if(!$rs) { 
  53.       return false; 
  54.     } 
  55.     $list = array(); 
  56.     while($row = mysql_fetch_assoc($rs)) { 
  57.       $list[] = $row
  58.     } 
  59.     return $list
  60.   } 
  61.   // 封装一个getRow方法 
  62.   // 参数:$sql 
  63.   // 返回: array,false 
  64.   public function getRow($sql) { 
  65.     $rs = $this->query($sql); 
  66.     if(!$rs) { 
  67.       return false; 
  68.     } 
  69.     return mysql_fetch_assoc($rs); 
  70.   } 
  71.   // 封装一个getOne方法, 
  72.   // 参数: $sql 
  73.   // 返回: int,str(单一的值) 
  74.   public function getOne($sql) { 
  75.     $rs = $this->query($sql); 
  76.     if(!$rs) { 
  77.       return false; 
  78.     } 
  79.     $tmp = mysql_fetch_row($rs); 
  80.     return $tmp[0]; 
  81.   } 
  82.   // 封装一个afftect_rows()方法 
  83.   // 参数:无 
  84.   // 返回 int 受影响行数 
  85.   public function affected_rows() { 
  86.     return mysql_affected_rows($this->conn); 
  87.   } 
  88.   // 返回最新生成的auto_increment列的值 
  89.   public function last_id() { 
  90.     return mysql_insert_id($this->conn); 
  91.   } 
  92.   // 选库函数 
  93.   public function select_db() { 
  94.     $sql = 'use ' . $this->db; 
  95.     return $this->query($sql); 
  96.   } 
  97.   // 设置字符集的函数 
  98.   public function setChar() { 
  99.     $sql = 'set names utf8'
  100.     return $this->query($sql); 
  101.   } 
  102.   // 自动生成insert语句,update语句并执行 
  103.   public function autoExecute($data,$table,$act='insert',$where='') { 
  104.     if($act == 'insert') { 
  105.       $sql = 'insert into ' . $table . ' ('
  106.       $sql .= implode(',',(array_keys($data))); 
  107.       $sql .= ') values (\''
  108.       $sql .= implode("','",array_values($data)); 
  109.       $sql .= "')"
  110.     } else if($act == 'update') { 
  111.       if(!trim($where)) { 
  112.         return false; 
  113.       } 
  114.       $sql = 'update ' . $table . ' set '
  115.       foreach($data as $k=>$v) { 
  116.         $sql .= $k
  117.         $sql .= '='
  118.         $sql .= "'".$v."',"
  119.       } 
  120.       $sql = substr($sql,0,-1); 
  121.       $sql .= ' where '
  122.       $sql .= $where
  123.     } else { 
  124.       return false; 
  125.     } 
  126.     //return $sql; 
  127.     return $this->query($sql); 
  128.   } 
  129. }

Tags: PHP单例模式 mysql类

分享到: