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中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 PHP
php检测url是否存在的方法
Apr 14 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
Laravel中间件实现原理详解
Oct 09 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
PHP数组常用函数实例小结
Aug 20 PHP
php实现小程序支付完整版
Oct 09 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
PHP基于进程控制函数实现多线程
Dec 09 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 文件缓存的性能测试
2010/04/25 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
使用js检测浏览器的实现代码
2013/05/14 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
微信通过页面(H5)直接打开本地app的解决方法
2017/09/09 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
分析在Python中何种情况下需要使用断言
2015/04/01 Python
TensorFlow损失函数专题详解
2018/04/26 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Python实现最常见加密方式详解
2019/07/13 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
艺术专业大学生自我评价
2013/09/22 职场文书
入学生会自荐书范文
2014/02/05 职场文书
高一化学教学反思
2014/02/05 职场文书
升旗仪式主持词
2014/03/19 职场文书
授权收款委托书范本
2014/10/10 职场文书
行政前台岗位职责
2015/04/16 职场文书
企业宣传稿范文
2015/07/23 职场文书
CPU不支持Windows11系统怎么办
2021/11/21 数码科技
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS