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

$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

$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

$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

$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

$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

$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的扩展库组件了.运行快,效率高

相关推荐:

php 仓储 sqlite_详解php封装db类连接sqlite3相关推荐

  1. 详解视频封装格式之MP4

    在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式.在上一篇文章(详解视频封装格式之FLV)中重点剖析了FLV格式.在这篇文章中,我们重点剖析一下MP4这种视频封装格式 ...

  2. 详解Ubuntu10.10下Qt连接Mysql数据库

    转载自:http://mobile.51cto.com/symbian-273262.htm 详解Ubuntu10.10下Qt连接Mysql数据库是本文要介绍的内容,很详细的步骤,我们先来看内容. 第 ...

  3. 【视频】详解Scala中的类及与Java的详细区别

    详解Scala中的类及与Java的详细区别

  4. 实验详解OSPF的几类LSA、FA转发规则(思科设备)

    目录 各类LSA 普通区域 五类LSA 四类LSA 特殊区域 stub区域 totally stub区域 NSSA区域 FA规则 totally nssa 本篇文章通过实验来详解OSPF的几类LSA ...

  5. cors账号登录显示服务器错误,详解如何解决CORS账号连接RTK无法获得固定解的问题...

    原标题:详解如何解决CORS账号连接RTK无法获得固定解的问题 在日常RTK测量的应用中,时常会出现无固定解的情况,导致测量测绘工作无法按时完成或者测量测绘结果精度无法保证. 如果你购买网络的是RTK ...

  6. 详解Unity中Time类的用法与深入探究

    前言 在游戏世界中,时间无疑是最为重要的参数,它是游戏世界能否正常运转的关键.一旦它出错,轻则卡顿,重则游戏世界崩坏.在使用Unity引擎创造的世界中,Time类无疑是必须要掌握的一个类,它是控制时间 ...

  7. 微信小程序连接蓝牙模块发送数据的详解以及封装版

    连接蓝牙 前言 详解 小程序链接蓝牙流程图 需要的数据 api openBluetoothAdapter:打开蓝牙适配器 getBluetoothAdapterState:查看蓝牙适配器状态 star ...

  8. JAVA面向对象三大特征详解:(封装,继承,多态)

    面向对象语言: 大家经常会听到说JAVA这门语言是面向对象的,但面向对象又是什么呢? 提到面向对象就要引入一个叫做面向过程的概念: 举个例子:把大象装进冰箱,需要几步. 面向过程的做法: 人走到冰箱前 ...

  9. 详解视频封装格式之FLV

    在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式,在这篇文章中,我们重点剖析一下FLV这种视频封装格式的具体情况. 一.FLV 的总体结构 FLV 是一种非常常见的音 ...

最新文章

  1. 2016.1.20 dubbo启动之后机器ip有问题
  2. mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解
  3. Google Map API V3开发(5)
  4. 5.prometheus告警插件-alertmanager、自定义webhook案例编写
  5. linux部署项目文档,Linux上部署综合项目专业资料.doc
  6. 一步步学习SPD2010--词汇表
  7. HTML+CSS+JS实现 ❤️透明等离子球ui特效❤️
  8. [转载] 晓说——第8期:镖局——最后的江湖(下)
  9. 计算机配件的真假辨伪,专家教你辨真伪 “火眼金睛”辨真假配件
  10. java 向DB2插入数据
  11. Atitit junit最佳实践 目录 1.1. 可以在包级别建立测试,避免太多的test class 1 1.2. 但文件独立方法测试 避免建立太多的class 1 1.3. 测试方法直接从bat
  12. Python和Java到底有什么区别?
  13. PyQt在qrc文件中添加自定义字体并使用
  14. Epub与Kindle
  15. Fiddler抓取手机端APP接口数据
  16. w7不显示网络计算机,Win7电脑任务栏不显示网络图标怎么办
  17. 【C/C++】多线程中的几种锁
  18. PCB多层板设计总结-层的分布设置
  19. 一个优秀的系统分析员应该具备的三个素质
  20. 用百度大脑EasyDL平台轻松玩转AI

热门文章

  1. php mysqli还原数据库,PHP mysqli操作数据库
  2. java 一个大事务下的新增、修改、查询_重新学习Mysql数据库8:MySQL的事务隔离级别实战...
  3. linux用户ftp失败,vsftpd本地用户登录密码错误的解决方法
  4. linux spyder 目录,linux下创建spyder桌面图标的方法
  5. java动效_Android 界面漩涡扭曲动效实现
  6. springboot 接收小程序图片以及参数_常见的SpringBoot面试题一
  7. 最好的电脑系统_热键被占用怎么办?电脑系统 程序 游戏热键被占用冲突如何解决?...
  8. 二级python 刷题就能过吗_Python 刷题笔记:这很不python,官方大大能改下吗?
  9. pyminifier混淆代码的使用案例
  10. linux杀气所以进程,Linux使用kill命令的注意事项