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数据库程序设计有所帮助。