<?php
class MySQL_DB {
private $last_query; //上一次执行的sql指令
private $conn; //当前连接数据库服务器的资源类型
private $errno; //错误代号
private $errDie = true; //强制错误后结束脚本
private $errMsgArr_filename = "";//自定义错误提示信息数组的文件名
//构造函数
public function __construct($dbhost, $dbuser, $dbpwd, $dbname, $dbcharset="utf8", $pconnect=0) {
//连接数据库服务器
if($pconnect == 0) {
$this->conn = mysql_connect($dbhost, $dbuser, $dbpwd);
}else{
$this->conn = mysql_pconnect($dbhost, $dbuser, $dbpwd);
}
if($this->conn == false) {
$this->errno = mysql_errno();//记录发生的错误代号
$this->errMsg();//报错
}
//选择操作的目标数据库
$res = mysql_select_db($dbname, $this->conn);
if($res == false) {
$this->errno = mysql_errno();//记录发生的错误代号
$this->errMsg();//报错
}
//设置字符集编码
$this->query("set names " . $dbcharset);
}
//设置errDie属性的方法(预留为以后ajax做操作准备)
private function set_errDie($value){
$this->errDie = $value;
}
//查询一条记录的sql操作
public function get_one($sql) {
$res = $this->query($sql);
$row = mysql_fetch_assoc($res);
return $row;
}
//查询多条
public function get_all($sql) {
$res = $this->query($sql);
$arr = array();
while($row = mysql_fetch_assoc($res)) {
$arr[] = $row;
}
return $arr;
}
//查询一个字段的值
public function get_val($sql) {
$res = $this->query($sql);
$row = mysql_fetch_array($res);
return $row[0];
}
//统计行数
public function get_count($tbName, $addWhere="") {
$sql = "select count(*) from {$tbName} {$addWhere}";
return $this->get_val($sql);
}
//执行sql指令
public function query($sql) {
$this->last_query = $sql;//保存当前的sql指令
$res = mysql_query($sql);
if($res == false) {
$this->errno = mysql_errno();//记录发生的错误代号
if($this->errno == 1062) {
//针对唯一性索引的错误,做特殊处理
return -1062;
}else{
$this->errMsg();//报错
}
}else{
return $res;
}
}
public function get_insert_id() {
return mysql_insert_id();
}
//设置自定义错误数组文件名的方法
private function set_errMsgArr_filename($filename) {
$this->errMsgArr_filename = $filename;
}
//获得定义在单独文件中的自定义错误信息
private function get_errMsgArr() {
if(file_exists($this->errMsgArr_filename)){
require_once($this->errMsgArr_filename);
}else{
$mysql_err_msg = "";
}
return $mysql_err_msg;
}
public function errMsg() {
echo "<div style='color:red;'>";
echo "Errno: " . $this->errno."<BR>";
echo "Last Query: " . $this->last_query . "<BR>";
//显示自定义的错误信息
$errMsgArr = $this->get_errMsgArr();
$errMsg = empty($errMsgArr) ? mysql_error() : ($errMsgArr[$this->errno] . "(" . mysql_error(). ")");
echo "Error Message: " . $errMsg;
echo "</div>";
if($this->errDie == true) {
exit;
}
}
}
?>
转载于:https://blog.51cto.com/xiyuan/610965