php 仓储 sqlite_详解php封装db类连接sqlite3
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相关推荐
- 详解视频封装格式之MP4
在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式.在上一篇文章(详解视频封装格式之FLV)中重点剖析了FLV格式.在这篇文章中,我们重点剖析一下MP4这种视频封装格式 ...
- 详解Ubuntu10.10下Qt连接Mysql数据库
转载自:http://mobile.51cto.com/symbian-273262.htm 详解Ubuntu10.10下Qt连接Mysql数据库是本文要介绍的内容,很详细的步骤,我们先来看内容. 第 ...
- 【视频】详解Scala中的类及与Java的详细区别
详解Scala中的类及与Java的详细区别
- 实验详解OSPF的几类LSA、FA转发规则(思科设备)
目录 各类LSA 普通区域 五类LSA 四类LSA 特殊区域 stub区域 totally stub区域 NSSA区域 FA规则 totally nssa 本篇文章通过实验来详解OSPF的几类LSA ...
- cors账号登录显示服务器错误,详解如何解决CORS账号连接RTK无法获得固定解的问题...
原标题:详解如何解决CORS账号连接RTK无法获得固定解的问题 在日常RTK测量的应用中,时常会出现无固定解的情况,导致测量测绘工作无法按时完成或者测量测绘结果精度无法保证. 如果你购买网络的是RTK ...
- 详解Unity中Time类的用法与深入探究
前言 在游戏世界中,时间无疑是最为重要的参数,它是游戏世界能否正常运转的关键.一旦它出错,轻则卡顿,重则游戏世界崩坏.在使用Unity引擎创造的世界中,Time类无疑是必须要掌握的一个类,它是控制时间 ...
- 微信小程序连接蓝牙模块发送数据的详解以及封装版
连接蓝牙 前言 详解 小程序链接蓝牙流程图 需要的数据 api openBluetoothAdapter:打开蓝牙适配器 getBluetoothAdapterState:查看蓝牙适配器状态 star ...
- JAVA面向对象三大特征详解:(封装,继承,多态)
面向对象语言: 大家经常会听到说JAVA这门语言是面向对象的,但面向对象又是什么呢? 提到面向对象就要引入一个叫做面向过程的概念: 举个例子:把大象装进冰箱,需要几步. 面向过程的做法: 人走到冰箱前 ...
- 详解视频封装格式之FLV
在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式,在这篇文章中,我们重点剖析一下FLV这种视频封装格式的具体情况. 一.FLV 的总体结构 FLV 是一种非常常见的音 ...
最新文章
- 2016.1.20 dubbo启动之后机器ip有问题
- mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解
- Google Map API V3开发(5)
- 5.prometheus告警插件-alertmanager、自定义webhook案例编写
- linux部署项目文档,Linux上部署综合项目专业资料.doc
- 一步步学习SPD2010--词汇表
- HTML+CSS+JS实现 ❤️透明等离子球ui特效❤️
- [转载] 晓说——第8期:镖局——最后的江湖(下)
- 计算机配件的真假辨伪,专家教你辨真伪 “火眼金睛”辨真假配件
- java 向DB2插入数据
- Atitit junit最佳实践 目录 1.1. 可以在包级别建立测试,避免太多的test class	1 1.2. 但文件独立方法测试 避免建立太多的class	1 1.3. 测试方法直接从bat
- Python和Java到底有什么区别?
- PyQt在qrc文件中添加自定义字体并使用
- Epub与Kindle
- Fiddler抓取手机端APP接口数据
- w7不显示网络计算机,Win7电脑任务栏不显示网络图标怎么办
- 【C/C++】多线程中的几种锁
- PCB多层板设计总结-层的分布设置
- 一个优秀的系统分析员应该具备的三个素质
- 用百度大脑EasyDL平台轻松玩转AI
热门文章
- php mysqli还原数据库,PHP mysqli操作数据库
- java 一个大事务下的新增、修改、查询_重新学习Mysql数据库8:MySQL的事务隔离级别实战...
- linux用户ftp失败,vsftpd本地用户登录密码错误的解决方法
- linux spyder 目录,linux下创建spyder桌面图标的方法
- java动效_Android 界面漩涡扭曲动效实现
- springboot 接收小程序图片以及参数_常见的SpringBoot面试题一
- 最好的电脑系统_热键被占用怎么办?电脑系统 程序 游戏热键被占用冲突如何解决?...
- 二级python 刷题就能过吗_Python 刷题笔记:这很不python,官方大大能改下吗?
- pyminifier混淆代码的使用案例
- linux杀气所以进程,Linux使用kill命令的注意事项