PHP---数据库操作类
时间:2021-07-01 10:21:17
帮助过:3人阅读
Class DB {
private $link_id;
private $handle;
private $is_log;
private $time;
//构造函数
public function __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;
}
}
//数据库连接
public function connect(
$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);
}
//查询
public function query(
$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)
public function get_one(
$sql,
$result_type =
MYSQL_ASSOC) {
$query =
$this->query(
$sql);
$rt =&
mysql_fetch_array(
$query,
$result_type);
$this->write_log("获取一条记录 ".
$sql);
return $rt;
}
//获取全部记录
public function get_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;
}
//插入
public function insert(
$table,
$dataArray) {
$field = ""
;
$value = ""
;
if( !
is_array(
$dataArray) ||
count(
$dataArray)<=0
) {
$this->halt(‘没有要插入的数据‘
);
return false;
}
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))
return false;
return true;
}
//更新
public function update(
$table,
$dataArray,
$condition=""
) {
if( !
is_array(
$dataArray) ||
count(
$dataArray)<=0
) {
$this->halt(‘没有要更新的数据‘
);
return false;
}
$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))
return false;
return true;
}
//删除
public function delete(
$table,
$condition=""
) {
if(
empty(
$condition) ) {
$this->halt(‘没有设置删除的条件‘
);
return false;
}
$sql = "delete from
$table where 1=1 and
$condition"
;
$this->write_log("删除 ".
$sql);
if(!
$this->query(
$sql))
return false;
return true;
}
//返回结果集
public function fetch_array(
$query,
$result_type =
MYSQL_ASSOC){
$this->write_log("返回结果集"
);
return mysql_fetch_array(
$query,
$result_type);
}
//获取记录条数
public function num_rows(
$results) {
if(!
is_bool(
$results)) {
$num =
mysql_num_rows(
$results);
$this->write_log("获取的记录条数为".
$num);
return $num;
} else {
return 0
;
}
}
//释放结果集
public function free_result() {
$void =
func_get_args();
foreach(
$void as $query) {
if(
is_resource(
$query) &&
get_resource_type(
$query) === ‘mysql result‘
) {
return mysql_free_result(
$query);
}
}
$this->write_log("释放结果集"
);
}
//获取最后插入的id
public function insert_id() {
$id =
mysql_insert_id(
$this->
link_id);
$this->write_log("最后插入的id为".
$id);
return $id;
}
//关闭数据库连接
protected function close() {
$this->write_log("已关闭数据库连接"
);
return @
mysql_close(
$this->
link_id);
}
//错误提示
private function halt(
$msg=‘‘
) {
$msg .= "\r\n".
mysql_error();
$this->write_log(
$msg);
die(
$msg);
}
//析构函数
public function __destruct() {
$this->
free_result();
$use_time = (
$this-> microtime_float())-(
$this->
time);
$this->write_log("完成整个查询任务,所用时间为".
$use_time);
if(
$this->
is_log){
fclose(
$this->
handle);
}
}
//写入日志文件
public function write_log(
$msg=‘‘
){
if(
$this->
is_log){
$text =
date("Y-m-d H:i:s")." ".
$msg."\r\n"
;
fwrite(
$this->handle,
$text);
}
}
//获取毫秒数
public function microtime_float() {
list(
$usec,
$sec) =
explode(" ",
microtime());
return ((
float)
$usec + (
float)
$sec);
}
}
?>
---config.db.php---
<?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"] = ‘./‘;//开启日志
?>
PHP---数据库操作类
标签: