简单的MySQLDB类
1 <?php 2 error_reporting(E_ALL ^ E_DEPRECATED); 3 4 //数据库操作类 5 class MySQLDB{ 6 7 //属性--必要的信息 8 private $_host; //主机 9 private $_port; //端口 10 private $_user; //用户名 11 private $_pass; //密码 12 private $_charset;//字符集 13 private $_dbname; //默认数据库 14 15 //属性--运行时生成 16 public $_link; //mysql link 资源 17 18 private static $_instance; 19 public static function getInstance($params=array()){ 20 if(!self::$_instance instanceof self){ 21 self::$_instance = new self($params); 22 } 23 return self::$_instance; 24 } 25 private function __clone(){} 26 27 /* 28 * 构造方法 29 * @param $param=array() array 关联数组 需要六个属性值 30 */ 31 private function __construct($params=array()){ 32 //初始化属性 33 $this->_initParams($params); 34 //连接数据库服务器 35 $this->_connect(); 36 //设定字符集 37 $this->_setCharset(); 38 //选择默认数据 39 $this->_selectDB(); 40 } 41 42 /* 43 * 初始化数据库服务器参数 44 */ 45 private function _initParams($params){ 46 $this->_host = isset($params['host'])?$params['host']:'127.0.0.1'; //本机 47 $this->_port = isset($params['port'])?$params['port']:'3306'; //3306 48 $this->_user = isset($params['user'])?$params['user']:''; //匿名用户 49 $this->_pass = isset($params['pass'])?$params['pass']:''; //没有密码 50 $this->_charset = isset($params['charset'])?$params['charset']:'utf8'; //utf8 51 $this->_dbname = isset($params['dbname'])?$params['dbname']:''; //表示不用选择默认数据库 52 } 53 54 55 /* 56 * 连接数据库服务器 57 */ 58 private function _connect(){ 59 //127.0.0.1:3306 60 if($link = mysql_connect("$this->_host:$this->_port",$this->_user,$this->_pass)){ 61 //成功 62 $this->_link = $link; 63 }else{ 64 //失败,强制脚本结束,提示错误信息 65 die("-_-!,连接数据库服务器失败,请确定连接选项"); 66 } 67 } 68 69 /* 70 * 设定指定字符集 71 */ 72 private function _setCharset(){ 73 $sql = "set names $this->_charset"; 74 if(mysql_query($sql,$this->_link)){ 75 //成功 76 }else{ 77 //执行失败给出错误信息 78 echo '-_-!SQL执行失败<br/>'; 79 echo '错误的SQL为:',$sql,'<br/>'; 80 echo '错误代码为:',mysql_errno($this->_link),'<br/>'; 81 echo '错误信息为:',mysql_error($this->_link); 82 die; 83 } 84 } 85 86 /* 87 * 选择默认数据库 88 * 如果没有指定,则不选择 89 */ 90 private function _selectDB(){ 91 //判断是否需要选择默认数据库,表示不需要,防止为0 92 if($this->_dbname !== ''){ 93 //不为空,才选择数据库 94 $sql = "use `$this->_dbname`"; 95 if(mysql_query($sql,$this->_link)){ 96 //成功 97 }else{ 98 //执行失败给出错误信息 99 echo '-_-!SQL执行失败<br/>';100 echo '错误的SQL为:',$sql,'<br/>';101 echo '错误代码为:',mysql_errno($this->_link),'<br/>';102 echo '错误信息为:',mysql_error($this->_link);103 die;104 }105 }106 }107 108 /**109 * 获得全部记录110 *111 * @param $sql string 查询类的SQL(select,show,desc)112 *113 * @return array 二维数组,记录的集合114 */115 public function fetchAll($sql){116 //先执行117 if(!$result = mysql_query($sql,$this->_link)){118 //执行失败给出错误信息119 echo '-_-!SQL执行失败<br/>';120 echo '错误的SQL为:',$sql,'<br/>';121 echo '错误代码为:',mysql_errno($this->_link),'<br/>';122 echo '错误信息为:',mysql_error($this->_link);123 die;124 }125 //获取数据126 $rows = array();127 while($row = mysql_fetch_assoc($result)){128 $rows[] = $row;129 }130 //释放结果集131 mysql_free_result($result);132 //返回133 return $rows;134 }135 136 /**137 * 获得一条记录138 *139 * @param $sql string 查询类的SQL(select,show,desc)140 *141 * @return array 一维数组,一条记录142 */143 public function fetchRow($sql){144 //先执行145 if(!$result = mysql_query($sql,$this->_link)){146 //执行失败给出错误信息147 echo '-_-!SQL执行失败<br/>';148 echo '错误的SQL为:',$sql,'<br/>';149 echo '错误代码为:',mysql_errno($this->_link),'<br/>';150 echo '错误信息为:',mysql_error($this->_link);151 die;152 }153 //获取数据154 $row = mysql_fetch_assoc($result);155 //释放结果集156 mysql_free_result($result);157 //返回158 return $row;159 }160 161 /**162 * 获得一个数据163 *164 * @param $sql string 查询类的SQL(select,show,desc)165 *166 * @return string 唯一的数据 第一条记录的第一列167 */168 public function fetchColumn($sql){169 //先执行170 if(!$result = mysql_query($sql,$this->_link)){171 //执行失败给出错误信息172 echo '-_-!SQL执行失败<br/>';173 echo '错误的SQL为:',$sql,'<br/>';174 echo '错误代码为:',mysql_errno($this->_link),'<br/>';175 echo '错误信息为:',mysql_error($this->_link);176 die;177 }178 //获取数据179 $row = mysql_fetch_row($result);180 //释放结果集181 mysql_free_result($result);182 //返回183 return $row[0];184 }185 186 187 /**188 * 序列化时执行的方法189 * @return array每个数组元素为一个需要被序列化的属性名190 *191 */192 public function __sleep(){193 return array('_host','_post','_user','_pass','_charset','_dbname');194 }195 196 /*197 * 反序列化时被执行198 * 重新初始化工作199 */200 public function __wakeup(){201 //连接数据库服务器202 $this->_connect();203 //设定连接字符集204 $this->_setCharset();205 //选择默认数据库206 $this->_selectDB();207 }208 }