PHP实现的sqlite数据库连接类


Posted in PHP onDecember 12, 2014

本文实例讲述了PHP实现的sqlite数据库连接类。分享给大家供大家参考。具体实现方法如下:

该sqlite数据库连接类就是利用了php与sqlite进行连接操作,代码如下:

*/ 

lass db_class { 

var $conn=null; 

var $querynum = 0; 

/** 

 * 数据库连接,返回数据库连接标识符 

 *  

 * @param string $ 数据库服务器主机 

 * @param string $ 数据库服务器帐号 

 * @param string $ 数据库服务器密码 

 * @param string $ 数据库名 

 * @param bool $ 是否保持持续连接,1为持续连接,0为非持续连接 

 * @return link_identifier $dbuser, $dbpw, $dbname, 

 */ 

function connect($dbhost, $pconnect = 0) { 

 $error = ''; 

 $func = $pconnect == 1 ? 'sqlite_popen' : 'sqlite_open'; 

 if (!$this -> conn = $func($dbhost, 0666, $error)) { 

  $this -> halt($error); 

 } 

 return $this -> conn; 

} 

/** 

 * 执行sql语句 

 *  

 * @param string $ sql语句 

 * @param string $ 默认为空,可选值为 cache unbuffered 

 * @param int $ cache以秒为单位的生命周期 

 * @return resource  

 */ 

function query($sql , $type = '' , $expires = 3600, $dbname = '') { 

 $error = ''; 

 $func = $type == 'unbuffered' ? 'sqlite_unbuffered_query' : 'sqlite_query'; 

 if (preg_match("/^s*select/i", $sql)) { 

  $query = $func($this -> conn, $sql, sqlite_assoc, $error); 

 } else { 

  $query = sqlite_exec($this -> conn, $sql, $error); 

 }  

 if ($error) { 

  $this -> halt($error, $sql); 

 } 

 $this -> querynum++; 

 return $query; 

}  

/* 

*@param string $ table名 

*@param string $ where条件 

*@param string $ colum名 

 

*@param string $ limit数量  

 

*/ 

function getlist($table , $wheres = "1=1",  $colums = '*' ,$limits = '3000',$orderbys="id desc") { 

 $query = $this -> query("select ".$colums." from ".$table." where ".$wheres." order by  ".$orderbys."  limit ".$limits, $type, $expires, $dbname); 

 while($rs = $this -> fetch_array($query)){ 

  $datas[]=$rs; 

  } 

 //print_r("select ".$colums." from ".$table." where ".$wheres." limit ".$limits); 

 //print_r($rs);die(); 

 $this -> free_result($query); 

 return $datas ; 

} 

function add_one($table , $colums ,$data ) { 

 //die("insert into ".$table." (".$colums.") values(".$data.")"); 

 $query = $this -> query("insert into ".$table." (".$colums.") values(".$data.")", $type, $expires, $dbname); 

 //return $this->insert_id(); 

 return $query; 

} 

function delist($table , $idarray,$wheres="no") { 

 if($wheres=='no') 

  $query = $this -> query("delete from ".$table." where id in(".$idarray.")", $type, $expires, $dbname); 

 else 

  $query = $this -> query("delete from ".$table." where ".$wheres, $type, $expires, $dbname); 

 return $query; 

} 

function updatelist($table , $updatedata,$idarray) { 

 $query = $this -> query("update ".$table." set ". $updatedata."  where id in(".$idarray.")", $type, $expires, $dbname); 

 return $query; 

} 

//update max_vote set maxtitle='$title',maxban='$ban', 

/** 

 * 执行sql语句,只得到一条记录 

 *  

 * @param string $ sql语句 

 * @param string $ 默认为空,可选值为 cache unbuffered 

 * @param int $ cache以秒为单位的生命周期 

 * @return array  

 */ 

function get_one($sql, $type = '', $expires = 3600, $dbname = '') { 

 $query = $this -> query($sql, $type, $expires, $dbname); 

 $rs = $this -> fetch_array($query); 

 $this -> free_result($query); 

 return $rs ; 

} 

/** 

 * 从结果集中取得一行作为关联数组 

 *  

 * @param resource $ 数据库查询结果资源 

 * @param string $ 定义返回类型 

 * @return array  

 */ 

function fetch_array($query, $result_type = sqlite_assoc) { 

 return sqlite_fetch_array($query, $result_type); 

} 

/** 

 * 取得前一次 sqlite操作所影响的记录行数 

 *  

 * @return int  

 */ 

function affected_rows() { 

 return sqlite_changes($this -> conn); 

} 

/** 

 * 取得结果集中行的数目 

 *  

 * @return int  

 */ 

function num_rows($query) { 

 return sqlite_num_rows($query); 

} 

/** 

 * 返回结果集中字段的数目 

 *  

 * @return int  

 */ 

function num_fields($query) { 

 return sqlite_num_fields($query); 

} 

/** 

 *  

 * @return array 备用,一般不用. 

 */ 

function result($query, $row) { 

 return @sqlite_fetch_all($query, sqlite_assoc); 

}  

/** 

 * sqlite没有相应函数 

 */ 

function free_result($query) { 

 return ; 

} 

/** 

 * 取得上一步 insert 操作产生的 id 

 *  

 * @return int  

 */ 

function insert_id() { 

 return sqlite_last_insert_rowid($this -> connid); 

} 

/** 

 *  

 * @return array 只得到数字索引 

 */ 

function fetch_row($query) { 

 return sqlite_fetch_array($query, sqlite_num); 

}  

/** 

 */ 

function fetch_assoc($query) { 

 return $this -> fetch_array($query, sqlite_assoc); 

}  

/** 

 *  

 * @return string  

 */ 

function version() { 

 return sqlite_libversion(); 

} 

function close() { 

 return sqlite_close($this -> conn); 

} 

/** 

 *  

 * @return string  

 */ 

function error() { 

 return sqlite_error_string($this -> errno); 

} 

/** 

 *  

 * @return int  

 */ 

function errno() { 

 return sqlite_last_error($this -> conn); 

} 

/** 

 * 显示mysql教程错误信息 

 */ 

function halt($message = '', $sql = '') { 

 exit("sqlitequery:$sql <br> sqliteerror:" . $this -> error() . " <br> sqliteerrno:" . $this -> errno() . " <br> message:$message"); 

}

希望本文所述对大家的PHP数据库程序设计有所帮助。

PHP 相关文章推荐
社区(php&amp;&amp;mysql)四
Oct 09 PHP
PHP+DBM的同学录程序(5)
Oct 09 PHP
一个好用的分页函数
Nov 16 PHP
PHP文件锁函数flock()详细介绍
Nov 18 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP对象克隆clone用法示例
Sep 28 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
PHP7.1实现的AES与RSA加密操作示例
Jun 15 PHP
php+redis实现消息队列功能示例
Sep 19 PHP
php+mysql数据库实现无限分类的方法
Dec 12 #PHP
PHP中if和or运行效率对比
Dec 12 #PHP
php实现高效获取图片尺寸的方法
Dec 12 #PHP
CI框架中cookie的操作方法分析
Dec 12 #PHP
jQuery Mobile + PHP实现文件上传
Dec 12 #PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 #PHP
PHP截取指定图片大小的方法
Dec 10 #PHP
You might like
php方法调用模式与函数调用模式简例
2011/09/20 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
js运动事件函数详解
2016/10/21 Javascript
jQuery实现按比例缩放图片的方法
2017/04/29 jQuery
js图片上传的封装代码
2017/08/01 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
Vue创建头部组件示例代码详解
2018/10/23 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
python实现倒计时的示例
2014/02/14 Python
python 读写文件,按行修改文件的方法
2018/07/12 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
Python玩转Excel的读写改实例
2019/02/22 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
2014年两会学习心得体会
2014/03/17 职场文书
学习十八大的心得体会
2014/09/01 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
乡镇领导班子批评与自我批评材料
2014/09/23 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
学校2016年圣诞节活动总结
2016/03/31 职场文书