前端之家收集整理的这篇文章主要介绍了
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