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的面试题集
Nov 19 PHP
PHP定时自动生成静态HTML的实现代码
Jun 20 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
php遍历数组的方法分享
Mar 22 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
php创建基本身份认证站点的方法详解
Jun 08 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
Dec 01 PHP
PHP 正则表达式小结
Feb 12 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 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实现Socket服务器的代码
2008/04/03 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
Python检测QQ在线状态的方法
2015/05/09 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
python定向爬取淘宝商品价格
2018/02/27 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
Python高级特性切片(Slice)操作详解
2018/09/27 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
描述内存分配方式以及它们的区别
2016/10/15 面试题
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
大一期末自我鉴定
2013/12/13 职场文书
大学生校园创业计划书
2014/02/08 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang