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的扩展库组件了.运行快,效率高
相关推荐:
python中sqlite3的基本操作实例讲解
php使用pdo连接sqlite3的配置示例详解
php中调用sqlite3
以上就是详解php封装db类连接sqlite3 的详细内容。