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
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
关于PHP session 存储方式的详细介绍
Jun 25 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
PDO::exec讲解
Jan 28 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
php读取mysql中文数据出现乱码的解决方法
2013/08/16 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
Mootools 1.2教程 类(一)
2009/09/15 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
js的[defer]和[async]属性
2014/11/24 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
快速了解Node中的Stream流是什么
2019/02/13 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
Python中基本的日期时间处理的学习教程
2015/10/16 Python
python实现将一个数组逆序输出的方法
2018/06/25 Python
Python使用pandas对数据进行差分运算的方法
2018/12/22 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
2020/05/22 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
数据保密承诺书
2014/06/03 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
小学思品教学反思
2016/02/20 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技