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 相关文章推荐
杏林同学录(四)
Oct 09 PHP
php正则表达式(regar expression)
Sep 10 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
多个PHP中文字符串截取函数
Nov 12 PHP
php中curl使用指南
Feb 05 PHP
php实现两个数组相加的方法
Feb 17 PHP
Windows下编译PHP5.4和xdebug全记录
Apr 03 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
Yii框架响应组件用法实例分析
Sep 04 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
php中switch语句用法详解
2015/08/17 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
2020/03/07 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
python 图片验证码代码
2008/12/07 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python实现flappy bird游戏
2018/12/24 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
Python+OpenCV采集本地摄像头的视频
2019/04/25 Python
python通过http下载文件的方法详解
2019/07/26 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
偷看我的初中毕业鉴定
2014/01/29 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
python opencv人脸识别考勤系统的完整源码
2021/04/26 Python
PyTorch的Debug指南
2021/05/07 Python