Home >Backend Development >PHP Tutorial >Detailed explanation of php encapsulated db class connection to sqlite3

Detailed explanation of php encapsulated db class connection to sqlite3

小云云
小云云Original
2017-12-18 15:27:192193browse

sqlite3_open is the api function (C/C++) of sqlite database, which is used to open (or create) a database file. This article mainly shares with you the knowledge of php encapsulating db class to connect to sqlite3, hoping to help everyone.

<?php
    class dbManager{
        public $db;
        function __construct(){
            if(!file_exists(&#39;./db.php&#39;)){
                $this->init();
                return;
            }
            $this->db = new SQLite3(&#39;./db.php&#39;);
        }
        function init(){
            $this->db = new SQLite3(&#39;./db.php&#39;);
            // 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;$i<count($param);$i++)
                        $stmt->bindValue($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;$i<count($memb);$i++){
                $res[$memb[$i]]=$arr[$i];
            }
            return $res;
        }
        function queryAll($sql,$param=null,$memb=null){
            $stmt=$this->db->prepare($sql);
            if(!$stmt)
                return false;
            if($param){
                if(is_array($param)){
                    for($i=0;$i<count($param);$i++)
                        $stmt->bindValue($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;$i<count($memb);$i++){
                    $it[$memb[$i]]=$arr[$i];
                }
                $res[]=$it;
            }
            $rs->finalize();
            $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;$i<count($param);$i++)
                        $stmt->bindValue($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;$i<count($param);$i++)
                        $stmt->bindValue($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(&#39;BEGIN&#39;);
        }
        function rollback(){
            return $this->exec(&#39;ROLLBACK&#39;);
        }
        function commit(){
            return $this->exec(&#39;COMMIT&#39;);
        }
        
        function escapeString($s){
            return $this->db->escapeString($s);
        }
        //最新插入的id
        function lastInsertRowID(){
            return $this->db->lastInsertRowID();
        }
        
        function lastErrorMsg (){
            return $this->db->lastErrorMsg();
        }
    }

?>

PDO supports database transplantation. If your deployment has multiple databases in the future, then use it. At the same time, PDO is designed in C and has high execution efficiency. Higher. It has been encapsulated as an extension library component of PHP. It runs quickly and is efficient

Related recommendations:

Basic operation examples of SQLite3 in Python Explain

Detailed explanation of the configuration example of php using pdo to connect to sqlite3

Calling sqlite3 in PHP

The above is the detailed content of Detailed explanation of php encapsulated db class connection to sqlite3. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn