DB类

database class-DB.class.php

  1 <?php    
  2 
  3     //工具类:专门负责操作数据库(mysql)
  4 
  5     class DB{
  6         //定义属性
  7         private $host;    //主机地址
  8         private $port;    //端口
  9         private $user;    //用户名
 10         private $pass;    //密码
 11         private $dbname;//数据库名字
 12         private $charset;    //字符集
 13 
 14         private $link;    //连接资源
 15 
 16         /*
 17          * 构造方法:初始化属性
 18          * @param1 array $arr = array(),数组:数组中使用属性的名字作为下标,传值过来
 19          * @示例:实参传递array('host' => 'localhost','port' => 3306...)
 20          * 注意:构造方法没有返回值:构造方法的返回值不会被外部调用的对象接收
 21         */
 22         public function __construct($arr = array()){
 23             //初始化属性
 24             $this->host = isset($arr['host']) ? $arr['host'] : 'localhost';
 25             $this->port = isset($arr['port']) ? $arr['port'] : '3306';
 26             $this->user = isset($arr['user']) ? $arr['user'] : '****';
 27             $this->pass = isset($arr['pass']) ? $arr['pass'] : '****';
 28             $this->dbname = isset($arr['dbname']) ? $arr['dbname'] : 'project';
 29             $this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8';
 30 
 31             //连接数据库
 32             $this->db_connect();
 33 
 34             //设置字符集
 35             $this->db_charset();
 36 
 37             //选择数据库
 38             $this->db_selectDB();
 39         }
 40 
 41         /*
 42          * 连接数据库:不需要参数:数据都存在属性中,属性本身可以在方法中被访问
 43         */
 44         private function db_connect(){
 45             //连接数据库
 46             $this->link = mysql_connect("{$this->host}:{$this->port}",$this->user,$this->pass);
 47             //数据库连接资源是没有作用域限制的
 48     
 49             //判断连接是否正确
 50             if(!$this->link){
 51                 //正确的处理:将错误信息记录到系统日志,通知系统管理员(邮件扩展)
 52                 //return false;
 53 
 54                 //暴力终止
 55                 echo '数据库连接失败!<br/>';
 56                 echo '失败编号是:' . mysql_errno() . '<br/>';
 57                 echo '失败原因是:' . iconv('GBK','UTF-8',mysql_errer()) . '<br/>';
 58                 exit;    //暴力终止
 59             }
 60         }
 61 
 62         /*
 63          * 设置字符集
 64         */
 65         private function db_charset(){
 66             //准备SQL语句
 67             $sql = "set names {$this->charset}";
 68 
 69             //调用db_query
 70             $this->db_query($sql);
 71         }
 72 
 73         /*
 74          * 选择数据库
 75         */
 76         private function db_selectDB(){
 77             //mysql_query:执行所有的SQL语句
 78             $sql = "use {$this->dbname}";
 79 
 80             //调用db_query方法
 81             $this->db_query($sql);
 82         }
 83 
 84         /*
 85          * 执行SQL语句,判断SQL错误
 86          * @param1 string $sql,要执行的SQL语句
 87          * @return mixed,返回布尔或者资源
 88         */
 89         public function db_query($sql){
 90             //mysql_query:执行所有的SQL语句
 91             $res = mysql_query($sql);
 92 
 93             //判断结果
 94             if(!$res){
 95                 echo 'SQL语句执行失败!<br/>';
 96                 echo '失败编号是:' . mysql_errno() . '<br/>';
 97                 echo '失败原因是:' . iconv('GBK','UTF-8',mysql_errer()) . '<br/>';
 98                 exit;    //暴力终止
 99             }
100 
101             //没有错误:正确
102             return $res;
103         }
104 
105         
106         /*
107          * 插入数据
108          * @param1 string $sql
109          * @return int 自增长ID
110         */
111         public function db_insert($sql){
112             //调用db_query执行
113             $this->db_query($sql);
114 
115             //获取自增长ID
116             return mysql_insert_id();
117         }
118 
119         /*
120          * 更新或者删除操作
121          * @param1 string $sql
122          * @return int 受影响的行数
123         */
124         private function db_exec($sql){
125             //调用db_query执行
126             $this->db_query($sql);
127             
128             //获取受影响的行数
129             return mysql_affected_rows();
130         }
131 
132         /*
133          * 查询数据:返回一条记录
134          * @param1 string $sql
135          * @return mixed,成功返回数组,失败返回false
136         */
137         public function db_getOne($sql){
138             //调用db_query执行    
139             $res = $this->db_query($sql);    //结果是资源
140 
141             //解析资源
142             return mysql_fetch_assoc($res);    //数组或者false
143         }
144 
145         /*
146          * 查询数据:返回一条记录
147          * @param1 string $sql
148          * @return mixed,成功返回数组(二维),失败返回空数组 ==== false
149         */
150         public function db_getAll($sql){
151             //调用db_query执行    
152             $res = $this->db_query($sql);    //结果是资源
153 
154             //解析资源(循环解析)
155             $list = array();
156             while($row = mysql_fetch_assoc($res)){
157                 $list[] = $row;
158             }
159 
160             //返回结果
161             return $list;
162         }
163 
164 
165     //类的结束
166     }
167 
168     /*
169     //测试代码:在测试成功之后全部删除
170     $db1 = new DB();
171     //$db2 = new DB(array('dbname' => 'test'));
172     //var_dump($db1,$db2);
173 
174     //增删改查
175     //连接数据库,必须要设置字符集和选择数据库
176     //$db1->db_connect();
177     //$db1->db_charset();
178     //$db1->db_selectDB();
179 
180     //操作
181     $sql = "select * from pr_student";
182     header('Content-type:text/html;charset=utf-8');
183     $students = $db1->db_getAll($sql);
184     var_dump($students);
185     */

 

posted @ 2015-10-04 12:58  lesuso  阅读(276)  评论(0编辑  收藏  举报