zoukankan      html  css  js  c++  java
  • 简单的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 }
  • 相关阅读:
    索引的实现:B+树
    SQL Server 查
    SQL Server 增、删、改、小部分查
    最最最最最基础的SQL Server
    三大范式
    SQLserver数据类型
    第一阶段项目
    2017.10.17一阶段项目心得
    jquery&bootstrap
    国庆小长假结束后的一阶段小测验
  • 原文地址:https://www.cnblogs.com/qzjpkfj/p/4063285.html
Copyright © 2011-2022 走看看