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 GD绘制24小时柱状图
Jun 28 PHP
探讨file_get_contents与curl效率及稳定性的分析
Jun 06 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
php防止sql注入代码实例
Dec 18 PHP
几个实用的PHP内置函数使用指南
Nov 27 PHP
php简单日历函数
Oct 28 PHP
浅谈PHP中的
Apr 23 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
php 过滤器实现代码
2010/08/09 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
js模拟实现Array的sort方法
2007/12/11 Javascript
基于jQuery的动态表格插件
2011/03/28 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
无限树Jquery插件zTree的常用功能特性总结
2014/09/11 Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
2018/01/18 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
python正则表达式re之compile函数解析
2017/10/25 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Under Armour安德玛中国官网:美国高端运动科技品牌
2018/03/09 全球购物
集体婚礼策划方案
2014/02/22 职场文书
怎么写好自荐书
2014/03/02 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
教堂婚礼主持词
2014/03/14 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
行政管理专业求职信
2014/07/06 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书