1 <?php
2 header("content-type:text/html;charset=utf-8");
3 error_reporting(E_ALL);
4
5 /*
6 连接数据库---类被实例化的自动连接
7 获取提示信息的方法
8 查询的方法
9 单条查询
10 多条查询
11 增删改的方法
12 统计记录数的方法
13 关闭数据库、销毁资源----程序结束的时候调用
14 */
15 class dbManage{
16 private $conn; #保存数据库连接
17 public $mess; #保存提示信息
18 /*
19 方法名:__construct 构造方法
20 方法功能: 类实例化的同时连接数据库
21 方法参数:$hostname 主机地址
22 $username 数据库用户名
23 $password 数据库密码
24 $dbname 数据库名称
25
26 */
27 public function __construct($hostname,$username,$password,$dbname){
28 $this->conn=mysqli_connect($hostname,$username,$password,$dbname); #连接数据库
29 //判断数据库是否正确连接
30 if($this->conn){
31 $this->getMessage('连接成功',true);
32 $res=mysqli_query($this->conn,"set names utf8");
33 //判断编码是否正确设置
34 if($res){
35 $this->getMessage('数据库编码设置为utf8',true);
36 }else{
37 $this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
38 }
39 }else{
40 $this->getMessage('连接失败',false);
41 }
42 }
43 /*
44 方法名:getMessage
45 方法功能: 改造提示信息
46 方法参数:$info 提示信息
47 $flag true表示正确信息绿色文字 false 表示失败信息红色文字
48 */
49 public function getMessage($info,$flag){
50 if($flag){
51
52 $this->mess.="<div style='color:green;'>".$info."</div>";
53 }else{
54 $this->mess.="<div style='color:red;'>".$info."</div>";
55 }
56 }
57 /*
58 方法名: getMoreData
59 方法功能: 获取多条记录
60 方法参数:$sql sql语句
61 */
62 public function getMoreData($sql){
63 $rreg=preg_match('/^select/',trim($sql));#验证$sql是否为查询语句
64
65 if($rreg){
66 $data=mysqli_query($this->conn,$sql);
67 //判断mysqli_query是否执行成功
68 if($data){
69 //将资源类型的数据$data改变成数组
70 while($arr=mysqli_fetch_array($data,MYSQL_ASSOC)){
71 $res[]=$arr;
72 }
73 return $res; #将执行成功结果返回
74 }else{
75 $this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
76 }
77 }else{
78 $this->getMessage(__FUNCTION__.'()只能用于查询多条记录',false);
79 }
80
81 }
82 /*
83 方法名: getOneData
84 方法功能: 获取单条记录
85 方法参数:$sql sql语句
86 */
87 public function getOneData($sql){
88 $rreg=preg_match('/^select/',trim($sql));
89 if($rreg){
90 $data=mysqli_query($this->conn,$sql);
91 if($data){
92 $arr=mysqli_fetch_array($data,MYSQL_ASSOC);
93 return $arr;
94 }else{
95 $this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
96 }
97 }else{
98 $this->getMessage(__FUNCTION__.'()只能用于查询单条记录',false);
99 }
100
101 }
102 /*
103 方法名: execSql
104 方法功能: 用于执行insert|update|delete|drop语句
105 方法参数:$sql sql语句
106 */
107 public function execSql($sql){
108 $rreg=preg_match('/^insert|delete|update|drop/',trim($sql));
109 if($rreg){
110 $data=mysqli_query($this->conn,$sql);
111 if($data){
112 $this->getMessage($sql.'语句执行成功',true);
113 return true;
114 }else{
115 $this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
116 return false;
117 }
118 }else{
119 $this->getMessage(__FUNCTION__.'()只能用于执行insert|update|delete|drop语句',false);
120 return false;
121 }
122 }
123 /*
124 方法名: getRows
125 方法功能: 获取满足条件的记录数
126 方法参数:$tablename 表名称
127 $tj 条件,默认为1,1表示统计整张表的记录数
128 */
129 public function getRows($tablename,$tj=1){
130 // select count(*) from student where cj>80;
131 $sql="select count(*) as c from ".$tablename." where ".$tj;
132 $data=mysqli_query($this->conn,$sql);
133 if($data){
134 $arr=mysqli_fetch_array($data,MYSQL_ASSOC);
135 // print_r($arr['c']);
136 return $arr['c'];
137 }else{
138 $this->getMessage(mysql_errno($this->conn).":".mysqli_error($this->conn),false);
139 }
140 }
141 /*
142 方法名: __destruct 析构方法
143 方法功能:销毁资源,关闭数据库 程序结束自动调用
144 方法参数:无
145 */
146 public function __destruct(){
147 mysqli_close($this->conn); #关闭数据库
148 unset($this->mess);#销毁mess
149 }
150 }
151
152 ?>