sqlite 数据库封装类php

前端之家收集整理的这篇文章主要介绍了sqlite 数据库封装类php前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
<?PHP 
/**
* class ,若有错误请指正
*/
class sqliteclass
{
    public $db_file="";
    public $version="";
    public $link="";
    public $error_msg="";

    public function __construct($db_file)
    {
        $this->db_file = $db_file;
        $this->connect($db_file);
        # code...
    }
    /*  @func:connect()
        @desp: 连接数据库
        @param:$db_file 数据库文件名
        @return:数据库链接成功,成功返回连接资源,否则输出错误信息。
     */
    public function connect(){
        if(!extension_loaded("sqlite")){
            $this->halt("请打开sqlite相关扩展");
        }
        if($this->link){
            return $this->link;
        }else{
            if(!this->link = sqlite_open($db_file,0666,$sqlite_error)){
                $this->halt($sqlite_error);
            }else{
                return $this->link;
            }
        }
    }
    /*
        @func:  getTables()
        @desp:  获取所有存在的表
        @pram:  none
        @return:    返回所有表组成的数组
     */
    public function getTables(){
        $tables = array();
        $sql = "select name from sqlite_master where type='table'";
        $result = $this->fetchAll($sql);
        foreach ($result as $value) {
            $tables[]=$value['name'];
            # code...
        }
        return $tables;
    }

    /*
        @func:  dropTables
        @desp:  删除数据库中的所有表
        @param: none
        @return:    成功返回true,失败返回false
             */
    public function dropTables(){
        $tables = $this->getTables;
        foreach ($tables as $table) {
            if (!$this->query("drop table $table")) {
                return false;
            }
        }
        return true;
    }
/*
        @func:  
        @desp:  检查表是否存在
        @param: $table_name 表名;
        @return:    存在返回true,否则返回false
             */
    public function checkTable($table_name){
        $tables = $this->getTables();
        return in_array($table_name,$tables);
    }

            /*
        @func:  query
        @desp:  执行查询语句
        @param: $sql 查询语句
        @return:    返回一个资源标示符,如果查询执行部正确则返回false
             */
    public function query($sql,$type=''){
        return @sqlite_query($this->link,$sql,sqlITE_BOTH,$this->error_msg);

    }
            

            /*
        @func:  fetchArray
        @desp:  执行查询
        @param: $query 查询结构资源标示符,$type 返回的数组类型,默认为关联数组
        @return:    返回一行的fetch结果
             */
    public function fetchArray($query,$type=sqlITE_ASSOC){
        return sqlite_fetch_array($query,$type);

    }
            

            /*
        @func:  fetchAll
        @desp:  获取结果集
        @param: $sql 查询语句,$type 返回的数组类型,默认为关联数组
        @return:    返回查询语句执行后的所有结果的二维数组
             */
            
    public function fetchAll($sql,$type=sqlITE_ASSOC){
        return sqlite_fetch_all($this->query($sql),$type);

    }
            /*
        @func:  resultFirst
        @desp:  取得第一行第一列的值
        @param: $SQL查询语句
        @return:    取得第一行第一列的值
             */
    public function resultFirst($sql){
        $result=$this->fetchArray($this->query($sql),$type=sqlITE_NUM);
        return $result[0];
    }
            
                  /*
        @func:  numRows
        @desp:  取得查询结果的行数
        @param: $query 查询语句执行后的资源描述符
        @return:    查询结果的行数
             */
    public function numRows($query){
        $result_rows=sqlite_num_rows($query);
        return $result_rows;

    }
                  /*
        @func:  countRows
        @desp:  获取查询结果的行数
        @param: $sql 查询语句
        @return:    获取查询结果的行数
             */
    public function countRows($sql){
        $query=$this->query($sql);
        $result_rows=sqlite_num_rows($query);
        return $result_rows;
    }
            
                  /*
        @func:  insertId
        @desp:  获取某个表的最大ID号,自增列integer primary key
        @param: $table 表ming,$id 主键
        @return:返回表的最大id值,如果为自增列,则可以认为是最后插入的记录id
             */
    public function insertId($table,$id){
        $sql = "select max($id) from $table";
        return $this->resultFirst($sql);
    }
                  /*
        @func:  numFields
        @desp:  取得结果集中字段的数目
        @param: $query 查询语句执行后返回的资源描述符
        @return:    取得结果集中字段的数目
             */
    public function numFields($query){
        return sqlite_num_fields($query);
    }
            
                  /*
        @func:  getError
        @desp:  返回上一个sqlite查询产生的文本错误信息
        @param:
        @return:返回上一个sqlite查询产生的文本错误信息
             */
    public function getError(){
        return $this->error_msg;
    }

                  /*
        @func:
        @desp:
        @param:
        @return: 返回上一个sqlite操作中的错误信息的数字编码
             */
    public function getErrno(){
        return sqlite_last_error($this->link);
    }

                     /*
        @func:
        @desp:  取得sqlite版本信息,此处根据创建的db文件信息读取,若不同文件格式不同,可能有问题
        @param:
        @return: sqlite版本信息
             */
    public function getVersion(){
        if(!$lines=file($this->db_file)){
            $this->halt("获取版本信息失败");
        }

        $sqliteinfo=explode("**",$lines[0]);
        $versioninfo=explode(" ",$sqliteinfo[1]);
        $this->version=$versioninfo[5]." ".$versioninfo[6];
        return $this->version;
    }
                  /*
        @func: halt
        @desp:  结束脚本,并输出相关信息
        @param: $msg 输出信息字符串
        @return:    
             */
    public function halt($msg){
        die($msg);
    }
            

                  /*
        @func:
        @desp:  释放获取数据库连接资源
        @param:
        @return:
             */
    public function close(){
        if($this->link){
            sqlite_close($this->link);
        }
    }        
 
                      /*
        @func:
        @desp: 析构函数
        @param:
        @return:
             */
    public function __destruct(){
        $this->close();
    }        

}
 ?>
原文链接:https://www.f2er.com/sqlite/200409.html

猜你在找的Sqlite相关文章