工厂模式实现数据库的操作

来源:互联网 发布:广州淘宝拍摄基地在哪 编辑:程序博客网 时间:2024/05/24 04:23

数据库操作封装

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 $whereEOF;        $this->query($sql);    }    function del($table,$where){//删除操作        $sql=<<<EOF        delete from $table where $whereEOF;        $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);    }}
0 0
原创粉丝点击