一起源码网

  • www.171739.xyz
  • 全球最大的互联网技术和资源下载平台
搜索
猜你喜欢
查看: 7460|回复: 1
打印 上一主题 下一主题

详解php封装db类连接sqlite3

[复制链接]

0

主题

0

帖子

1万

积分

钻石会员

Rank: 8Rank: 8

积分
17424
QQ
跳转到指定楼层
楼主
发表于 2020-5-18 19:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sqlite3_open是sqlite数据库的api函数(C/C++),作用是打开(或创建)一个数据库文件。本文主要和大家分享php封装db类连接sqlite3 的知识,希望能帮助到大家。

<?php
    class dbManager{
        public $db;
        function __construct(){
            if(!file_exists('./db.php')){
                $this->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;$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('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支持数据库移植,如果你的部署将来有多种数据库,那就用它了.同时,PDO是C设计的,执行效率较高.他已经封装为PHP的扩展库组件了.运行快,效率高

分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

0

主题

19

帖子

71

积分

注册会员

Rank: 2

积分
71
沙发
发表于 2022-10-9 22:17 | 只看该作者
企业音乐网站源码
回复

使用道具 举报

一起源码让程序更轻更快

www.171739.xyz

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表