国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

php封裝db 類連接sqlite3

alin / 1800人閱讀

摘要:最新插入的支持?jǐn)?shù)據(jù)庫移植如果你的部署將來有多種數(shù)據(jù)庫那就用它了同時是設(shè)計(jì)的執(zhí)行效率較高他已經(jīng)封裝為的擴(kuò)展庫組件了運(yùn)行快效率高這是修改為版本的原生類導(dǎo)入的配置文件我這里只是方便前端修改,也可以搞成文件

init();
                return;
            }
            $this->db = new SQLite3("./db.php");
        }
        function init(){
            $this->db = new SQLite3("./db.php");
            // TODO:
        }

        function changes(){
            return $this->db->changes();
        }

        function query($sql,$param=null,$memb=null){
            $stmt=$this->db->prepare($sql);
            if(!$stmt)
                return false;
            if($param){
                if(is_array($param)){
                    for($i=0;$ibindValue($i+1,$param[$i]);
                }else{
                    $stmt->bindValue(1,$param);
                }
            }
            $rs=$stmt->execute();
            if(!$rs){
                $stmt->close();
                return false;
            }
            $arr=$rs->fetchArray(SQLITE3_NUM);
            $rs->finalize();
            $stmt->close();
            if(!$arr)
                return null;
            if(!$memb)
                return $arr;
            $res=array();
            for($i=0;$idb->prepare($sql);
            if(!$stmt)
                return false;
            if($param){
                if(is_array($param)){
                    for($i=0;$ibindValue($i+1,$param[$i]);
                }else{
                    $stmt->bindValue(1,$param);
                }
            }
            $rs=$stmt->execute();
            if(!$rs){
                $stmt->close();
                return false;
            }
            
            $res=array();
            while($arr=$rs->fetchArray(SQLITE3_NUM)){
                if(!$memb) {
                    $res[]=$arr;
                    continue;
                }
                if(count($memb)==1 && $memb[0]==null){
                    $res[]=$arr[0];
                    continue;
                }
                $it=array();
                for($i=0;$ifinalize();
            $stmt->close();
            
            return $res;
        }

        function querySingle($sql,$param=null){
            $res=$this->query($sql,$param);
            if(!$res)
                return false;
            return $res[0];
        }
        
        function querySingleAll($sql,$param=null){
            $stmt=$this->db->prepare($sql);
            if(!$stmt)
                return false;
            if($param){
                if(is_array($param)){
                    for($i=0;$ibindValue($i+1,$param[$i]);
                }else{
                    $stmt->bindValue(1,$param);
                }
            }
            $rs=$stmt->execute();
            if(!$rs){
                $stmt->close();
                return false;
            }
            
            $res=array();
            while($arr=$rs->fetchArray(SQLITE3_NUM)){
                $res[]=$arr[0];
            }
            $rs->finalize();
            $stmt->close();
            
            return $res;
        }

        function exec($sql,$param=null){
            $stmt=$this->db->prepare($sql);
            if(!$stmt)
                return false;
            if($param){
                if(is_array($param)){
                    for($i=0;$ibindValue($i+1,$param[$i]);
                }else{
                    $stmt->bindValue(1,$param);
                }
            }
            $rs=$stmt->execute();
            if($rs) {
                $res=true;
                $rs->finalize();
            }else{
                $res=false;
            }
            $stmt->close();
            return $res;
        }
        
        function begin(){
            return $this->exec("BEGIN");
        }
        function rollback(){
            return $this->exec("ROLLBACK");
        }
        function commit(){
            return $this->exec("COMMIT");
        }
        
        function escapeString($s){
            return $this->db->escapeString($s);
        }
        //最新插入的id
        function lastInsertRowID(){
            return $this->db->lastInsertRowID();
        }
        
        function lastErrorMsg (){
            return $this->db->lastErrorMsg();
        }
    }
?>

PDO支持?jǐn)?shù)據(jù)庫移植,如果你的部署將來有多種數(shù)據(jù)庫,那就用它了.同時,PDO是C設(shè)計(jì)的,執(zhí)行效率較高.他已經(jīng)封裝為PHP的擴(kuò)展庫組件了.運(yùn)行快,效率高

class dbManager{
    
    function __construct($config) {
        $text = file_get_contents($config);
        $obj = json_decode($text);
        $this->db= new PDO($obj -> dsn, $obj -> user, $obj -> pass);
    }
    
    private function bind_param($stmt,&$param){
        if ($param || $param===0) {
            if (is_array($param)) {
                for ($i = 0; $i < count($param); $i++)
                    $stmt -> bindParam($i + 1, $param[$i]);
            } else {
                $stmt -> bindParam(1, $param);
            }
        }
    }
    
    function exec($sql, $param = null) {
        $stmt = $this -> db -> prepare($sql);
        if (!$stmt){
            var_dump($this->db->errorinfo());
            return false;
        }
        $this->bind_param($stmt,$param);
        $res = $stmt -> execute();
        if($res){
            $res=$stmt->rowCount();
        }
        $stmt -> closeCursor();
        return $res;
    }
    
    function query($sql,$param=null,$name=true){
        $stmt = $this -> db -> prepare($sql);
        if (!$stmt){
            return null;
        }
        $this->bind_param($stmt,$param);
        $res = $stmt -> execute();
        if(!$res){
            $stmt->closeCursor();
            return null;
        }
        $arr=$stmt->fetch($name?PDO::FETCH_ASSOC:PDO::FETCH_NUM);
        $stmt -> closeCursor();
        return $arr;
    }
    
    function queryAll($sql,$param=null,$name=true){
        $stmt = $this -> db -> prepare($sql);
        if (!$stmt){
            return null;
        }
        $this->bind_param($stmt,$param);
        $res = $stmt -> execute();
        if(!$res){
            $stmt->closeCursor();
            return null;
        }
        $arr=$stmt->fetchAll($name?PDO::FETCH_ASSOC:PDO::FETCH_NUM);
        $stmt -> closeCursor();
        return $arr;
    }
    
    function querySingle($sql,$param=null,$name=true){
        $stmt = $this -> db -> prepare($sql);
        if (!$stmt){
            return null;
        }
        $this->bind_param($stmt,$param);
        $res = $stmt -> execute();
        if(!$res){
            $stmt->closeCursor();
            return null;
        }
        $arr=$stmt->fetchColumn();
        $stmt -> closeCursor();
        return $arr;
    }
    
    function querySingleAll($sql,$param=null,$name=true){
        $stmt = $this -> db -> prepare($sql);
        if (!$stmt){
            return null;
        }
        $this->bind_param($stmt,$param);
        $res = $stmt -> execute();
        if(!$res){
            $stmt->closeCursor();
            return null;
        }
        $arr=[];
        do{
            $item=$stmt->fetchColumn();
            if($item)
                $arr[]=$item;
        }while($item!==false);
        $stmt -> closeCursor();
        return $arr;
    }

    public function begin() {
        $this -> db -> beginTransaction();
    }

    public function rollback() {
        $this -> db -> rollBack();
    }

    public function commit() {
        $this -> db -> commit();
    }
}

/*
$db=new dbManager("db.json");
$db->exec("CREATE TABLE USER(ID INTEGER PRIMARY KEY NOT NULL)");
$db->exec("INSERT INTO user(ID) VALUES(?)",1);
var_dump($db->query("SELECT * FROM USER WHERE ID=?",1));
var_dump($db->queryAll("SELECT * FROM USER WHERE ID=?",1));
var_dump($db->querySingle("SELECT * FROM USER WHERE ID=?",1));
var_dump($db->querySingleAll("SELECT * FROM USER WHERE ID=?",1));
*/

?>

這是修改為pdo版本的原生db類
導(dǎo)入的json配置文件
{

"dsn":"sqlite:test.db",
"user":"",
"pass":""

}
我這里只是方便前端修改,也可以搞成php文件

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26220.html

相關(guān)文章

  • Golang數(shù)據(jù)庫編程之GORM庫入門

    摘要:在上一篇文章中我們講解了使用語言的標(biāo)準(zhǔn)庫包操作數(shù)據(jù)庫的過程,雖然使用包操作數(shù)據(jù)也是挺方便的,但是需要自己寫每一條語句,因此我們可能會自己再度進(jìn)行封裝,以便更好地使用,而使用現(xiàn)有語言開源框架則是代替自己封裝的一個更好的方式。在上一篇文章中我們講解了使用Go語言的標(biāo)準(zhǔn)庫sql/database包操作數(shù)據(jù)庫的過程,雖然使用sql/database包操作數(shù)據(jù)也是挺方便的,但是需要自己寫每一條SQL語...

    番茄西紅柿 評論0 收藏0

發(fā)表評論

0條評論

alin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<