php数据库操作类,转

<?php

Class DB {

private$link_id;

private$handle;

private$is_log;

private$time;

//构造函数

publicfunction__construct() {

$this->time =$this->microtime_float();

require_once("config.db.php");

$this->connect($db_config["hostname"],$db_config["username"],$db_config["password"],$db_config["database"],$db_config["pconnect"]);

$this->is_log =$db_config["log"];

if($this->is_log){

$handle=fopen($db_config["logfilepath"]."dblog.txt","a+");

$this->handle=$handle;

}

}

//数据库连接

publicfunctionconnect($dbhost,$dbuser,$dbpw,$dbname,$pconnect= 0,$charset='utf8') {

if($pconnect==0 ) {

$this->link_id = @mysql_connect($dbhost,$dbuser,$dbpw, true);

if(!$this->link_id){

$this->halt("数据库连接失败");

}

}else{

$this->link_id = @mysql_pconnect($dbhost,$dbuser,$dbpw);

if(!$this->link_id){

$this->halt("数据库持久连接失败");

}

}

if(!@mysql_select_db($dbname,$this->link_id)) {

$this->halt('数据库选择失败');

}

@mysql_query("set names ".$charset);

}

//查询

publicfunctionquery($sql) {

$this->write_log("查询 ".$sql);

$query= mysql_query($sql,$this->link_id);

if(!$query)$this->halt('Query Error: '.$sql);

return$query;

}

//获取一条记录(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH)

publicfunctionget_one($sql,$result_type= MYSQL_ASSOC) {

$query=$this->query($sql);

$rt=& mysql_fetch_array($query,$result_type);

$this->write_log("获取一条记录 ".$sql);

return$rt;

}

//获取全部记录

publicfunctionget_all($sql,$result_type= MYSQL_ASSOC) {

$query=$this->query($sql);

$i= 0;

$rt=array();

while($row=& mysql_fetch_array($query,$result_type)) {

$rt[$i]=$row;

$i++;

}

$this->write_log("获取全部记录 ".$sql);

return$rt;

}

//插入

publicfunctioninsert($table,$dataArray) {

$field="";

$value="";

if( !is_array($dataArray) ||count($dataArray)<=0) {

$this->halt('没有要插入的数据');

returnfalse;

}

while(list($key,$val)=each($dataArray)) {

$field.="$key,";

$value.="'$val',";

}

$field=substr($field,0,-1);

$value=substr($value,0,-1);

$sql="insert into $table($field) values($value)";

$this->write_log("插入 ".$sql);

if(!$this->query($sql))returnfalse;

returntrue;

}

//更新

publicfunctionupdate($table,$dataArray,$condition="") {

if( !is_array($dataArray) ||count($dataArray)<=0) {

$this->halt('没有要更新的数据');

returnfalse;

}

$value="";

while( list($key,$val) = each($dataArray))

$value.="$key = '$val',";

$value.=substr($value,0,-1);

$sql="update $table set $value where 1=1 and $condition";

$this->write_log("更新 ".$sql);

if(!$this->query($sql))returnfalse;

returntrue;

}

//删除

publicfunctiondelete($table,$condition="") {

if(empty($condition) ) {

$this->halt('没有设置删除的条件');

returnfalse;

}

$sql="delete from $table where 1=1 and $condition";

$this->write_log("删除 ".$sql);

if(!$this->query($sql))returnfalse;

returntrue;

}

//返回结果集

publicfunctionfetch_array($query,$result_type= MYSQL_ASSOC){

$this->write_log("返回结果集");

returnmysql_fetch_array($query,$result_type);

}

//获取记录条数

publicfunctionnum_rows($results) {

if(!is_bool($results)) {

$num= mysql_num_rows($results);

$this->write_log("获取的记录条数为".$num);

return$num;

}else{

return0;

}

}

//释放结果集

publicfunctionfree_result() {

$void= func_get_args();

foreach($voidas$query) {

if(is_resource($query) && get_resource_type($query) ==='mysql result') {

returnmysql_free_result($query);

}

}

$this->write_log("释放结果集");

}

//获取最后插入的id

publicfunctioninsert_id() {

$id= mysql_insert_id($this->link_id);

$this->write_log("最后插入的id为".$id);

return$id;

}

//关闭数据库连接

protectedfunctionclose() {

$this->write_log("已关闭数据库连接");

return@mysql_close($this->link_id);

}

//错误提示

privatefunctionhalt($msg='') {

$msg.="\r\n".mysql_error();

$this->write_log($msg);

die($msg);

}

//析构函数

publicfunction__destruct() {

$this->free_result();

$use_time= ($this-> microtime_float())-($this->time);

$this->write_log("完成整个查询任务,所用时间为".$use_time);

if($this->is_log){

fclose($this->handle);

}

}

//写入日志文件

publicfunctionwrite_log($msg=''){

if($this->is_log){

$text=date("Y-m-d H:i:s")." ".$msg."\r\n";

fwrite($this->handle,$text);

}

}

//获取毫秒数

publicfunctionmicrotime_float() {

list($usec,$sec) =explode(" ", microtime());

return((float)$usec+ (float)$sec);

}

}

?>

2. [代码]config.db.php 跳至[1][2][全屏预览]

?

1

2

3

4

5

6

7

8

9

10

<?php

$db_config["hostname"] ="localhost";//服务器地址

$db_config["username"] ="root";//数据库用户名

$db_config["password"] ="123";//数据库密码

$db_config["database"] ="test";//数据库名称

$db_config["charset"] ="utf8";//数据库编码

$db_config["pconnect"] = 1;//开启持久连接

$db_config["log"] = 1;//开启日志

$db_config["logfilepath"] ='./';//开启日志

?>