数据库操作封装
namespace Database;
class db_mysqli{
private $link;//数据库连接
private $query;
function err($error){//错误调用函数
die('对不起,您的操作有误。错误情况如下:'.$error);
}
function connect($config) {//数据库连接,需要数据库配置参数,$config以关联数组形式配置
extract($config);
$link=new mysqli($dbhost,$dbuser,$dbpswd,$dbname);
$link->set_charset($dbcharset);
if($link){
// echo "success<br/>";
$this->link=$link;
}else{
$this->err($link->connect_error);
}
}
function query($sql){//执行sql语句
$query=$this->link->query($sql);
if($query){
// echo "success1<br/>";
$this->query=$query;
return $query;
}else{
$this->err($sql.'<br/>'.$this->link->error);
}
}
function findAll($query){//返回所有执行sql语句后产生的结果
$this->query=$query;
while (($row=$this->query->fetch_assoc())){
$list[]=$row;
}
return isset($list)?$list:'';
}
function findOne($query){//返回一条结果
$this->query=$query;
$oneRes=$this->query->fetch_assoc();
return $oneRes;
}
function findResult($query,$row,$field){
$this->query=$query;
$this->query->data_seek($row);
$data=$this->query->fetch_array(MYSQLI_BOTH);
return $data[$field];
}
function insert($table,$arr){//执行插入操作,可以插入多条数据
foreach ($arr as $key=>$value){
$value=$this->link->real_escape_string($value);
$keyArr[]="`".$key."`";
$valueArr[]="'".$value."'";
}
$keys=implode(",", $keyArr);
$values=implode(",", $valueArr);
$sql=<<<EOF
insert into $table($keys) values($values)
EOF;
$this->query($sql);
return $this->link->insert_id;
}
function update($table,$arr,$where){
foreach ($arr as $key=>$value){
$value=$this->link->real_escape_string($value);
$key_valueArr[]="`".$key."`='".$value."'";
}
$key_value=implode(",", $key_valueArr);
$sql=<<<EOF
update $table set $key_value where $where
EOF;
$this->query($sql);
}
function del($table,$where){//删除操作
$sql=<<<EOF
delete from $table where $where
EOF;
$this->query($sql);
}
}
工厂模式封装
namespace Database;
class DB {
public static $db;
public static $link;
public static function init($dbtype, $config) {
self::$db = new $dbtype();
self::$link=self::$db->connect($config);
}
public static function query($sql){
return self::$db->query($sql);
}
public static function findAll($sql){
$query = self::$db->query($sql);
return self::$db->findAll($query);
}
public static function findOne($sql){
$query = self::$db->query($sql);
return self::$db->findOne($query);
}
public static function findResult($sql, $row = 0, $filed = 0){
$query = self::$db->query($sql);
return self::$db->findResult($query, $row, $filed);
}
public static function insert($table,$arr){
return self::$db->insert($table,$arr);
}
public static function update($table, $arr, $where){
return self::$db->update($table, $arr, $where);
}
public static function del($table,$where){
return self::$db->del($table,$where);
}
}