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输出控制功能在简繁体转换中的应用
Oct 09 PHP
用PHP和ACCESS写聊天室(九)
Oct 09 PHP
smtp邮件发送一例
Oct 09 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php curl模拟post请求小实例
Nov 13 PHP
php 发送带附件邮件示例
Jan 23 PHP
php实现简易聊天室应用代码
Sep 23 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
PHP实现操作redis的封装类完整实例
Nov 14 PHP
PHP函数超时处理方法
Feb 14 PHP
如何利用预加载优化Laravel Model查询详解
Aug 11 PHP
PHP explode()函数用法讲解
Feb 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 注释规范
2012/03/29 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
深入分析PHP设计模式
2020/06/15 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
javascript 的变量、作用域和内存问题
2017/04/19 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
python ddt实现数据驱动
2018/03/14 Python
Python 实现一行输入多个值的方法
2018/04/21 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
详解python 中in 的 用法
2019/12/12 Python
Python count函数使用方法实例解析
2020/03/23 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
中专生自荐信
2013/10/12 职场文书
后勤工作职责
2013/12/22 职场文书
企业总经理职责
2014/02/02 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
教师节获奖感言
2015/07/31 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
python 解决微分方程的操作(数值解法)
2021/05/26 Python
基于redis+lua进行限流的方法
2022/07/23 Redis