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 相关文章推荐
打造计数器DIY三步曲(中)
Oct 09 PHP
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
PHP学习笔记之数组篇
Jun 28 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
php+mysql数据库查询实例
Jan 21 PHP
php结合正则获取字符串中数字
Jun 19 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
PHP使用PDO访问oracle数据库的步骤详解
Sep 29 PHP
PHP hex2bin()函数用法讲解
Feb 25 PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 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投票系统防刷票判断流程分析
2012/02/04 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
JS的反射问题
2010/04/07 Javascript
jquery ajax局部加载方法详解(实现代码)
2016/05/12 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Python实现批量把SVG格式转成png、pdf格式的代码分享
2014/08/21 Python
python的即时标记项目练习笔记
2014/09/18 Python
基于python socketserver框架全面解析
2017/09/21 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
在python中利用try..except来代替if..else的用法
2019/12/19 Python
腾讯公司的一个sql题
2013/01/22 面试题
《赶海》教学反思
2014/04/20 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014年党小组工作总结
2014/12/20 职场文书
计算机专业自荐信
2015/03/05 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server
goland设置颜色和字体的操作
2021/05/05 Golang
python中filter,map,reduce的作用
2022/06/10 Python