<?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 "
"; echo "Last Query: " . $this->last_query . "
"; //显示自定义的错误信息 $errMsgArr = $this->get_errMsgArr(); $errMsg = empty($errMsgArr) ? mysql_error() : ($errMsgArr[$this->errno] . "(" . mysql_error(). ")"); echo "Error Message: " . $errMsg; echo "