1. 程式人生 > >工廠模式實現資料庫的操作

工廠模式實現資料庫的操作

資料庫操作封裝

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);
    }

}