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设计模式 Command(命令模式)
Jun 26 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
Dec 19 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
PHP面向对象学习笔记之一 基础概念
Oct 06 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
Nov 01 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
解决php接收shell返回的结果中文乱码问题
Jan 23 PHP
php阻止页面后退的方法分享
Feb 17 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP共享内存用法实例分析
Feb 12 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 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
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
php绘制一个矩形的方法
2015/01/24 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
2019/05/29 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
jQuery基于排序功能实现上移、下移的方法
2016/11/26 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
vue中的非父子间的通讯问题简单的实例代码
2017/07/19 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
python 随机数生成的代码的详细分析
2011/05/15 Python
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
cf收人广告词大全
2014/03/14 职场文书
村干部培训方案
2014/05/02 职场文书
初中家长评语和期望
2014/12/26 职场文书
家电创业计划书
2019/08/05 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers