/**
* 数据库工具类
* 1.连接数据库
* 2.执行增删改查功能功能并报错
* 3.没有参数传递是则使用默认信息连接
*/
class mysql {
private $link = null; //记录连接资源
private $host;
private $port;
private $user;
private $pass;
private $charset;
private $dbname; //设定6个私有属性,以存储连接属性
//单例化1,设定私有静态属性,存储该单例化对象
private static $instance = null;
//单例化2,将构造方法私有化
private function __construct($conf){
//保留属性,并设定默认值
$this->host=$conf[‘host‘] ?$conf[‘host‘]:"localhost";
$this->port=$conf[‘port‘]?$conf[‘port‘]:"3306";
$this->user=$conf[‘user‘] ?$conf[‘user‘]:"root";
$this->pass=$conf[‘pass‘] ?$conf[‘pass‘]:"zhangHD";
$this->charset=$conf[‘charset‘] ?$conf[‘charset‘]:"utf8";
$this->dbname=$conf[‘dbname‘] ?$conf[‘dbname‘]:"mvc";
$this->connect();
}
//单例化3,设定静态方法并判断是否需要new对象,并返回
static function getdb($conf){
if(empty(self::$instance)){
self::$instance = new self($conf);
}
return self::$instance;
}
//更改数据库
function select_database($db){
$this->query("use $db");
$this->dbname=$db;
}
//更改连接的字符集
function select_charset($charset){
$this->query("set names $charset");
$this->charset = $charset;
}
//关闭连接
function close(){
mysql_close($this->link);
}
//该方法专门处理SQL语句,执行成功则返回,失败则结束
private function query($sql){
$result = mysql_query($sql,$this->link);
if($result === false){
echo "<p>发生错误了,请参考:";
echo "<br>错误语句:".$sql;
echo "<br>错误提示:".mysql_error();
echo "<br>错误代号:".mysql_errno();
die(); //失败即终止程序
}else {
return $result;
}
}
//该方法用于执行一条没有返回结果的增删改查语句
function exec ($sql){
$result = $this->query($sql);
return true;
}
//该方法可以执行一条返回多行数据的select语句,并将数据以“二维数组”的形式返回
function getrows($sql){
$result = $this->query($sql);
//返回二维数组。此时$result是“结果集”
while($res = mysql_fetch_assoc($result)){
$arr[]=$res;
}
return $arr;
}
//返回一行多列数据
function getonerow($sql){
$result = $this->query($sql);
//返回一组数据。此时$result是“结果集”
if($rec = mysql_fetch_assoc($result)){
return $rec;
}
return array();
}
//返回一行多列数据
function getonedate($sql){
$result = $this->query($sql);
//返回一组数据。此时$result是“结果集”
if($rec = mysql_fetch_row($result)){
return $rec[0];//如果没有数据,则返回该行
}
return false;//表示没有数据
}
//将连接资源保存到本地硬盘中
function __sleep(){
return array(‘host‘,‘port‘,‘user‘,‘pass‘,‘charset‘,‘dbname‘);
}
//调取本地存储的连接资源再次连接数据库系统
function __wakeup(){
$this->connect();
}
//连接数据库并将连接资源存储起来
private function connect(){
$this->link = @mysql_connect("{$this->host}:{$this->port}","{$this->user}","{$this->pass}") or die (‘数据库服务器连接失败!!!‘);
$this->select_charset($this->charset);
$this->select_database($this->dbname);
}
}