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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
回答PHPCHINA上的几个问题:URL映射
Feb 14 PHP
基于PHP array数组的教程详解
Jun 05 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
Chrome Web App开发小结
Sep 04 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
Laravel框架源码解析之入口文件原理分析
May 14 PHP
PHP7 windows支持
Mar 09 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
自动分页的不完整解决方案
2007/01/12 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
Yii2配置Nginx伪静态的方法
2017/05/05 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
electron实现qq快捷登录的方法示例
2018/10/22 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Python 中如何写注释
2020/08/28 Python
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
毕业自荐信
2013/12/16 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers