此数据库工具类根据传智播客2018年8月的PHP教程所设计。
class Db
{
/*
这是一个“三私一公”的单例设计数据库模式类
*/
//私有的静态的保存对象的属性
private static $obj = null;
//私有的数据库配置信息
private $Db_host;
private $Db_user;
private $Db_pswd;
private $Db_name;
private $link;
//私有的构造方法防止外部创建对象
//将外部传来的数据库连接参数赋值给私有成员属性
private function __construct($config=array())
{
$this->Db_host = $config["Db_host"];
$this->Db_user = $config["Db_user"];
$this->Db_pswd = $config["Db_pswd"];
$this->Db_name = $config["Db_name"];
$this->connectDb();
$this->selectDb();
}
//私有的克隆方法防止外部克隆对象
private function __clone()
{}
//公共的静态的创建对象的方法
public static function getInstance($config=array()){
//检测$obj是否存在,如不存在即创建,如存在即返回
if(!self::$obj instanceof self){
self::$obj = new self($config);
}
return self::$obj;
}
//私有的连接数据库的方法
private function connectDb(){
if(!$this->link = mysqli_connect($this->Db_host,$this->Db_user,$this->Db_pswd)){
echo "连接数据库{$this->Db_host}失败,具体错误是:".mysqli_connect_error();
die();
}
}
//私有的选择数据库的方法
private function selectDb(){
if(!mysqli_select_db($this->link,$this->Db_name)){
echo "选择{$this->Db_host}数据库失败,具体错误是:".mysqli_connect_error();
die();
}
}
//公共的执行增删改语句的方法
public function exec($sql){
$sql = strtolower($sql);
if(substr($sql,0,6)=="select"){
echo "不能执行SELECT语句";
die();
}else{
return mysqli_query($this->link,$sql);
}
}
//私有的执行查询语句的方法
private function query($sql){
$sql = strtolower($sql);
if(substr($sql,0,6)!="select"){
echo "只能执行SELECT语句";
die();
}else{
//返回查询的结果集对象
return mysqli_query($this->link,$sql);
}
}
//获取单行数据
public function fetchOne($sql,$type=3){
$result = $this->query($sql);
$types=array(
1 => MYSQLI_NUM,
2 => MYSQLI_BOTH,
3 => MYSQLI_ASSOC,
);
return mysqli_fetch_array($result,$types[$type]);
}
//获取多行数据
public function fetchAll($sql,$type=3){
$result = $this->query($sql);
$types=array(
1 => MYSQLI_NUM,
2 => MYSQLI_BOTH,
3 => MYSQLI_ASSOC,
);
return mysqli_fetch_all($result,$types[$type]);
}
//获取记录数量
public function rowCount($sql){
$result = $this->query($sql);
return mysqli_num_rows($result);
}
//公共的析构方法用于关闭数据库连接
public function __destruct()
{
mysqli_close($this->link);
}
};
$arr=array(
"Db_host" => "localhost",
"Db_user" => "username",
"Db_pswd" => "password",
"Db_name" => "name"
);
$Db= Db::getInstance($arr);
//查询并返回结果行数
$search = $obj->rowCount("SELECT * from Table_name");
//查询并返回结果集
$search = $obj->fetchAll("SELECT * from Table_name");
//查询并返回一个结果
$search = $obj->fetchOne("SELECT * from Table_name");
//增删改数据库并返回布尔值结果
$operate = $obj->exec("DELETE from Table_name");//这句话是删除某个表的全部数据
原创文章,作者:STEVE,如若转载,请注明出处:https://shinecloud.com.cn