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中支持多种编码的中文字符串截取函数!
Mar 20 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
thinkPHP实现瀑布流的方法
Nov 29 PHP
php实现的任意进制互转类分享
Jul 07 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
PHP实现的CURL非阻塞调用类
Jul 26 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php基本函数汇总
2015/07/09 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
理解Javascript_09_Function与Object
2010/10/16 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
Web开发中客户端的跳转与服务器端的跳转的区别
2017/03/05 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
JS回调函数 callback的理解与使用案例分析
2019/09/09 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python 命令行非阻塞输入的小例子
2013/09/27 Python
python学习手册中的python多态示例代码
2014/01/21 Python
python提取内容关键词的方法
2015/03/16 Python
Python Socket使用实例
2017/12/18 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
css3背景_动力节点Java学院整理
2017/07/11 HTML / CSS
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
银行求职信个人范文
2013/12/16 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL