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+dbfile开发小型留言本
Oct 09 PHP
模拟flock实现文件锁定
Feb 14 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
Jul 02 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
php对关联数组循环遍历的实现方法
Mar 13 PHP
日常整理PHP中简单的图形处理(经典)
Oct 26 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP 数组基本操作方法详解
Jun 17 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
基于laravel where的高级使用方法
Oct 10 PHP
PHP与Web页面的交互示例详解一
Aug 04 PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 #PHP
PHP实现的最大正向匹配算法示例
Dec 19 #PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 #PHP
PHP实现的折半查找算法示例
Dec 19 #PHP
php之header的不同用法总结(实例讲解)
Nov 28 #PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 #PHP
PHP命令空间namespace及use的用法小结
Nov 27 #PHP
You might like
PHP文件上传原理简单分析
2011/05/29 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JS判定是否原生方法
2013/07/22 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
JS实现的RC4加密算法示例
2018/08/16 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
简单介绍Ruby中的CGI编程
2015/04/10 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Python读写文件方法总结
2015/06/09 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
英文版销售经理个人求职信
2013/11/20 职场文书
城建学院毕业生自荐信
2014/01/31 职场文书
班级心理活动总结
2014/07/04 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python
python绘制云雨图raincloud plot
2022/08/05 Python