>  기사  >  백엔드 개발  >  sqlite3에 대한 PHP 캡슐화된 db 클래스 연결에 대한 자세한 설명

sqlite3에 대한 PHP 캡슐화된 db 클래스 연결에 대한 자세한 설명

小云云
小云云원래의
2017-12-18 15:27:192158검색

sqlite3_open은 데이터베이스 파일을 열거나 생성하는 데 사용되는 sqlite 데이터베이스의 API 함수(C/C++)입니다. 이 기사는 주로 sqlite3에 연결하기 위해 db 클래스를 캡슐화하는 PHP에 대한 지식을 공유하며 모든 사람에게 도움이 되기를 바랍니다.

<?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는 데이터베이스 이식을 지원합니다. 향후 배포에 여러 데이터베이스가 있을 경우 이를 사용하세요. 동시에 PDO는 C로 설계되었으며 실행 효율성이 높습니다. 빠른 실행 및 높은 효율성

관련 권장 사항:

Python

pdo를 사용하여 sqlite3을 php

에 연결하는 자세한 구성 예 PHP

에서 sqlite3 호출하기

위 내용은 sqlite3에 대한 PHP 캡슐화된 db 클래스 연결에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.