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 array_slice函数的使用以及参数详解
Aug 30 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
探讨如何在PHP开启gzip页面压缩实例
Jun 09 PHP
微信公众号模板消息群发php代码示例
Dec 29 PHP
自制PHP框架之设计模式
May 07 PHP
解决laravel 5.1报错:No supported encrypter found的办法
Jun 07 PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
基于swoole实现多人聊天室
Jun 14 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
vmware linux系统安装最新的php7图解
Apr 14 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微信支付通知的处理方式
2014/05/25 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
2019/04/09 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
Bootstrap table使用方法记录
2017/08/23 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Python3实现Web网页图片下载
2016/01/28 Python
python队列Queue的详解
2019/05/10 Python
安装docker-compose的两种最简方法
2019/07/30 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
规划编制实施方案
2014/03/15 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2015年技术员工作总结
2015/04/10 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
中秋节感想
2015/08/10 职场文书
小学感恩主题班会
2015/08/12 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
jdbc使用PreparedStatement批量插入数据的方法
2021/04/27 MySQL
python实战之用emoji表情生成文字
2021/05/08 Python