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写的serv-u的web申请账号的程序
Oct 09 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 PHP
thinkphp循环结构用法实例
Nov 24 PHP
PHP制作百度词典查词采集器
Jan 29 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
Jul 23 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 PHP
Laravel构建即时应用的一种实现方法详解
Aug 31 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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/10 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
2015/11/27 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
Vue计算属性的学习笔记
2017/03/22 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
使用Python画出小人发射爱心的代码
2019/11/23 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
Python定义一个函数的方法
2020/06/15 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
kfc实习自我鉴定
2013/12/14 职场文书
个人担保书范文
2014/05/20 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
教师师德师风整改措施
2014/10/24 职场文书
健康状况证明书
2014/11/26 职场文书
南京南京观后感
2015/06/02 职场文书
红色影片观后感
2015/06/18 职场文书
运动会通讯稿600字
2015/07/20 职场文书
Mysql存储过程、触发器、事件调度器使用入门指南
2022/01/22 MySQL
DSP接收机前端设想
2022/04/05 无线电
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js
SQL中的连接查询详解
2022/06/21 SQL Server