标签:
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 */
标签:
原文地址:http://www.cnblogs.com/lesuso/p/4854449.html