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调用Twitter的RSS的实现代码
Mar 10 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
探讨PHP调用时间格式的参数详解
Jun 06 PHP
使用PHP会话(Session)实现用户登陆功能
Jun 29 PHP
php获取网页请求状态程序示例
Jun 17 PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
Aug 19 PHP
Yii CDBCriteria常用方法实例小结
Jan 19 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 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
PHP中实现图片的锐化
2006/10/09 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
php数组转成json格式的方法
2015/03/09 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
Node.js开发指南中的简单实例(mysql版)
2013/09/17 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
JavaScript全屏和退出全屏事件总结(附代码)
2017/08/17 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
2020/04/28 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python实现浪漫的烟花秀
2019/01/30 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
后勤园长自我鉴定
2013/10/17 职场文书
英文版网络工程师求职信
2013/10/28 职场文书
单独二胎证明
2015/06/24 职场文书