工廠模式實現資料庫的操作
阿新 • • 發佈:2019-01-30
資料庫操作封裝
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);
}
}