PHP实现的sqlite数据库连接类
本文实例讲述了PHP实现的sqlite数据库连接类。分享给大家供大家参考。具体实现方法如下:
该sqlite数据库连接类就是利用了php与sqlite进行连接操作,代码如下:
*/
lassdb_class{
var$conn=null;
var$querynum=0;
/**
*数据库连接,返回数据库连接标识符
*
*@paramstring$数据库服务器主机
*@paramstring$数据库服务器帐号
*@paramstring$数据库服务器密码
*@paramstring$数据库名
*@parambool$是否保持持续连接,1为持续连接,0为非持续连接
*@returnlink_identifier$dbuser,$dbpw,$dbname,
*/
functionconnect($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语句
*
*@paramstring$sql语句
*@paramstring$默认为空,可选值为cacheunbuffered
*@paramint$cache以秒为单位的生命周期
*@returnresource
*/
functionquery($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;
}
/*
*@paramstring$table名
*@paramstring$where条件
*@paramstring$colum名
*@paramstring$limit数量
*/
functiongetlist($table,$wheres="1=1", $colums='*',$limits='3000',$orderbys="iddesc"){
$query=$this->query("select".$colums."from".$table."where".$wheres."orderby ".$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;
}
functionadd_one($table,$colums,$data){
//die("insertinto".$table."(".$colums.")values(".$data.")");
$query=$this->query("insertinto".$table."(".$colums.")values(".$data.")",$type,$expires,$dbname);
//return$this->insert_id();
return$query;
}
functiondelist($table,$idarray,$wheres="no"){
if($wheres=='no')
$query=$this->query("deletefrom".$table."whereidin(".$idarray.")",$type,$expires,$dbname);
else
$query=$this->query("deletefrom".$table."where".$wheres,$type,$expires,$dbname);
return$query;
}
functionupdatelist($table,$updatedata,$idarray){
$query=$this->query("update".$table."set".$updatedata." whereidin(".$idarray.")",$type,$expires,$dbname);
return$query;
}
//updatemax_votesetmaxtitle='$title',maxban='$ban',
/**
*执行sql语句,只得到一条记录
*
*@paramstring$sql语句
*@paramstring$默认为空,可选值为cacheunbuffered
*@paramint$cache以秒为单位的生命周期
*@returnarray
*/
functionget_one($sql,$type='',$expires=3600,$dbname=''){
$query=$this->query($sql,$type,$expires,$dbname);
$rs=$this->fetch_array($query);
$this->free_result($query);
return$rs;
}
/**
*从结果集中取得一行作为关联数组
*
*@paramresource$数据库查询结果资源
*@paramstring$定义返回类型
*@returnarray
*/
functionfetch_array($query,$result_type=sqlite_assoc){
returnsqlite_fetch_array($query,$result_type);
}
/**
*取得前一次sqlite操作所影响的记录行数
*
*@returnint
*/
functionaffected_rows(){
returnsqlite_changes($this->conn);
}
/**
*取得结果集中行的数目
*
*@returnint
*/
functionnum_rows($query){
returnsqlite_num_rows($query);
}
/**
*返回结果集中字段的数目
*
*@returnint
*/
functionnum_fields($query){
returnsqlite_num_fields($query);
}
/**
*
*@returnarray备用,一般不用.
*/
functionresult($query,$row){
return@sqlite_fetch_all($query,sqlite_assoc);
}
/**
*sqlite没有相应函数
*/
functionfree_result($query){
return;
}
/**
*取得上一步insert操作产生的id
*
*@returnint
*/
functioninsert_id(){
returnsqlite_last_insert_rowid($this->connid);
}
/**
*
*@returnarray只得到数字索引
*/
functionfetch_row($query){
returnsqlite_fetch_array($query,sqlite_num);
}
/**
*/
functionfetch_assoc($query){
return$this->fetch_array($query,sqlite_assoc);
}
/**
*
*@returnstring
*/
functionversion(){
returnsqlite_libversion();
}
functionclose(){
returnsqlite_close($this->conn);
}
/**
*
*@returnstring
*/
functionerror(){
returnsqlite_error_string($this->errno);
}
/**
*
*@returnint
*/
functionerrno(){
returnsqlite_last_error($this->conn);
}
/**
*显示mysql教程错误信息
*/
functionhalt($message='',$sql=''){
exit("sqlitequery:$sql<br>sqliteerror:".$this->error()."<br>sqliteerrno:".$this->errno()."<br>message:$message");
}
希望本文所述对大家的PHP数据库程序设计有所帮助。