·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> 简单的MySQLDB类

简单的MySQLDB类

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
简单的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 }