<?php
header("content-type:text/html;charset=utf-8");
error_reporting(E_ALL); /*
连接数据库---类被实例化的自动连接
获取提示信息的方法
查询的方法
单条查询
多条查询
增删改的方法
统计记录数的方法
关闭数据库、销毁资源----程序结束的时候调用
*/
class dbManage{
private $conn; #保存数据库连接
public $mess; #保存提示信息
/*
方法名:__construct 构造方法
方法功能: 类实例化的同时连接数据库
方法参数:$hostname 主机地址
$username 数据库用户名
$password 数据库密码
$dbname 数据库名称 */
public function __construct($hostname,$username,$password,$dbname){
$this->conn=mysqli_connect($hostname,$username,$password,$dbname); #连接数据库
//判断数据库是否正确连接
if($this->conn){
$this->getMessage('连接成功',true);
$res=mysqli_query($this->conn,"set names utf8");
//判断编码是否正确设置
if($res){
$this->getMessage('数据库编码设置为utf8',true);
}else{
$this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
}
}else{
$this->getMessage('连接失败',false);
}
}
/*
方法名:getMessage
方法功能: 改造提示信息
方法参数:$info 提示信息
$flag true表示正确信息绿色文字 false 表示失败信息红色文字
*/
public function getMessage($info,$flag){
if($flag){ $this->mess.="<div style='color:green;'>".$info."</div>";
}else{
$this->mess.="<div style='color:red;'>".$info."</div>";
}
}
/*
方法名: getMoreData
方法功能: 获取多条记录
方法参数:$sql sql语句
*/
public function getMoreData($sql){
$rreg=preg_match('/^select/',trim($sql));#验证$sql是否为查询语句 if($rreg){
$data=mysqli_query($this->conn,$sql);
//判断mysqli_query是否执行成功
if($data){
//将资源类型的数据$data改变成数组
while($arr=mysqli_fetch_array($data,MYSQL_ASSOC)){
$res[]=$arr;
}
return $res; #将执行成功结果返回
}else{
$this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
}
}else{
$this->getMessage(__FUNCTION__.'()只能用于查询多条记录',false);
} }
/*
方法名: getOneData
方法功能: 获取单条记录
方法参数:$sql sql语句
*/
public function getOneData($sql){
$rreg=preg_match('/^select/',trim($sql));
if($rreg){
$data=mysqli_query($this->conn,$sql);
if($data){
$arr=mysqli_fetch_array($data,MYSQL_ASSOC);
return $arr;
}else{
$this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
}
}else{
$this->getMessage(__FUNCTION__.'()只能用于查询单条记录',false);
} }
/*
方法名: execSql
方法功能: 用于执行insert|update|delete|drop语句
方法参数:$sql sql语句
*/
public function execSql($sql){
$rreg=preg_match('/^insert|delete|update|drop/',trim($sql));
if($rreg){
$data=mysqli_query($this->conn,$sql);
if($data){
$this->getMessage($sql.'语句执行成功',true);
return true;
}else{
$this->getMessage(mysqli_errno($this->conn).":".mysqli_error($this->conn),false);
return false;
}
}else{
$this->getMessage(__FUNCTION__.'()只能用于执行insert|update|delete|drop语句',false);
return false;
}
}
/*
方法名: getRows
方法功能: 获取满足条件的记录数
方法参数:$tablename 表名称
$tj 条件,默认为1,1表示统计整张表的记录数
*/
public function getRows($tablename,$tj=1){
// select count(*) from student where cj>80;
$sql="select count(*) as c from ".$tablename." where ".$tj;
$data=mysqli_query($this->conn,$sql);
if($data){
$arr=mysqli_fetch_array($data,MYSQL_ASSOC);
// print_r($arr['c']);
return $arr['c'];
}else{
$this->getMessage(mysql_errno($this->conn).":".mysqli_error($this->conn),false);
}
}
/*
方法名: __destruct 析构方法
方法功能:销毁资源,关闭数据库 程序结束自动调用
方法参数:无
*/
public function __destruct(){
mysqli_close($this->conn); #关闭数据库
unset($this->mess);#销毁mess
}
} ?>

最新文章

  1. Echarts 3.19 制作常用的图形 非静态
  2. 20_学生选课数据库SQL语句练习题1
  3. javascript中,对于this指向的浅见
  4. Java 7 Concurrency Cookbook 翻译 第一章 线程管理之二
  5. 【转】BLE_CC2540_初学者入门指导
  6. 搭建SpringMVC+MyBatis开发框架四
  7. php yii框架使用MongoDb
  8. java07循环结构
  9. Qt5中生成和使用静态库
  10. LeetCode Day3
  11. RII K25A 语音空中飞鼠 红外学习步骤
  12. FAAC1.28 在海思HI3520D/HI3515A平台linux中的编译 优化
  13. StringBuffer与StringBuilder的作用与区别
  14. UITableView回调和table相关成员方法详解
  15. SourceTree 文件被锁异常
  16. 6-Python3从入门到实战—基础之数据类型(元组-Tuple)
  17. 【详解】JNI (Java Native Interface) (三)
  18. 牛客网暑期ACM多校训练营(第二场)J farm (二维树状数组)
  19. Oracle 12C -- native left outer join的加强
  20. LA 3026 &amp;&amp; POJ 1961 Period (KMP算法)

热门文章

  1. UGUI源码之Graphic
  2. 移动端保存当前屏幕内容为图片,canvas图片拼接
  3. 【Leetcode 做题学算法周刊】第七期
  4. Tarjan强连通分量模板
  5. java main 方法
  6. 《C# 爬虫 破境之道》:第一境 爬虫原理 — 第一节:整体思路
  7. [洛谷P1606] [USACO07FEB] 荷叶塘Lilypad Pond
  8. windows10卸载虚拟机忘记按照步骤卸载的实际问题
  9. Linux网络文件共享服务之NFS
  10. Easy C 编程 in Linux