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木马攻击防御之道
Mar 24 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
PHP求最大子序列和的算法实现
Jun 24 PHP
Admin generator, filters and I18n
Oct 06 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php通过递归方式复制目录和子目录的方法
Mar 13 PHP
PHP里的单例类写法实例
Jun 25 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
php源码的安装方法和实例
Sep 26 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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双层循环(九九乘法表)
2017/10/23 PHP
详解thinkphp中的volist标签
2018/01/15 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
Javascript注入技巧
2007/06/22 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
js实现图片轮播效果
2015/12/19 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
JavaScript 正则表达式中global模式的特性
2016/02/25 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
python中解析json格式文件的方法示例
2017/05/03 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
python unittest实现api自动化测试
2018/04/04 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python相对企业语言优势在哪
2020/06/12 Python
Python特殊属性property原理及使用方法解析
2020/10/09 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
大专学生推荐信范文
2013/11/19 职场文书
出纳会计岗位职责
2014/03/12 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
体育教师个人工作总结
2015/02/09 职场文书
2019公司管理制度
2019/04/19 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL