php封装db类连接sqlite3数据库的方法实例


Posted in PHP onDecember 19, 2017

前言

SQLite3扩展名在PHP 5.3.0+以上都会默认启用。可以在编译时使用--without-sqlite3来禁用它。

Windows用户可通过启用php_sqlite3.dll才能使用此扩展。 php_sqlite3.dll默认包含在PHP 5.3.0之后的PHP发行版中。

有关详细的安装说明,请查看PHP教程及其官方网站。

本文主要介绍了关于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的扩展库组件了.运行快,效率高

更多关于PHP用PDO如何封装简单易用的DB类的内容可以参考这篇文章:https://3water.com/article/119880.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php方法调用模式与函数调用模式简例
Sep 20 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
Yii Framework框架获取分类下面的所有子类方法
Jun 20 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
php实现的二分查找算法示例
Jun 20 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
在PHP中实现使用Guzzle执行POST和GET请求
Oct 15 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 #PHP
PHP实现的最大正向匹配算法示例
Dec 19 #PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 #PHP
PHP实现的折半查找算法示例
Dec 19 #PHP
PHP实现的二分查找算法实例分析
Dec 19 #PHP
PHP实现git部署的方法教程
Dec 19 #PHP
PHP递归实现快速排序的方法示例
Dec 18 #PHP
You might like
PHP生成条形码大揭秘
2015/09/24 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
JavaScript constructor和instanceof,JSOO中的一对欢喜冤家
2009/05/25 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
javascript操作css属性
2013/12/30 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
AngularJS内置指令
2015/02/04 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
JavaScript图片处理与合成总结
2018/03/04 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python3基础之基本数据类型概述
2014/08/13 Python
python和pygame实现简单俄罗斯方块游戏
2021/02/19 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
HTML5 语义化结构化规范化
2008/10/17 HTML / CSS
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
八荣八耻演讲稿
2014/09/15 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
贷款担保书
2015/01/20 职场文书
2015年保送生自荐信
2015/03/24 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python