`

PHP数据库操作类

    博客分类:
  • PHP
 
阅读更多
<?php
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);
	}
}

?>

 

<?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数据库操作类

    【标题】:“强大的通用php数据库操作类” 在PHP开发中,数据库操作是核心部分,而一个强大且通用的PHP数据库操作类能极大地提升开发效率,降低出错概率。这类类库通常封装了基本的SQL查询功能,如增删改查(CRUD)...

    PHP数据库操作类--数据库操作

    这个类是一个PHP操作数据库的抽象类。直接下载就可以使用。里面有简单的使用例子。这个类绝对可以帮助你完成对数据库的各种操作。

    php数据库操作类

    通过使用这样一个PHP数据库操作类,开发者可以更专注于业务逻辑,而不必关心底层数据库操作的细节,提高开发效率。同时,类的封装使得代码更加整洁,易于测试和维护。在实际项目中,你可以根据需求对这个类进行扩展...

    PHP数据库操作类的实现

    下面将详细解释如何实现这样一个PHP数据库操作类。 1. 连接数据库 首先,我们需要建立与数据库的连接。在PHP中,常用的数据库扩展有MySQLi和PDO(PHP Data Objects)。这里以MySQLi为例,创建一个构造函数来初始化...

    PHP数据库操作类,支持多连接

    这个自编写的PHP数据库操作类,名为DBConnection,旨在提供一个高效、灵活的解决方案来管理多个数据库连接,允许开发者根据需求轻松地在不同的数据源之间切换。 DBConnection类的主要特点和功能如下: 1. **多...

    php数据库操作类 DbClass

    在PHP开发中,数据库操作是不可或缺的一部分,而DbClass是一个常用的PHP数据库操作类,它封装了常见的数据库查询、增删改查等操作,使得开发者能够更高效、安全地与数据库进行交互。DbClass通常会支持多种数据库系统...

    理想的php数据库操作类

    "理想的PHP数据库操作类"旨在提供一个高效、安全且易于使用的接口,以便开发者能够更便捷地与各种数据库进行交互。下面,我们将深入探讨这个数据库操作类的核心知识点及其重要性。 首先,PHP中的数据库操作通常涉及...

    PHP数据库操作类.pdf

    在这个PDF文档中,介绍了一个自定义的PHP数据库操作类,这个类简化了数据库连接、查询和其他数据库操作的过程。以下是该类的一些关键知识点: 1. **类属性**: - `$db_host`:存储数据库主机名,通常是服务器地址...

    自己写的一个PHP数据库操作类

    标题提到的"自己写的一个PHP数据库操作类"正是为了解决这个问题,提供了一种封装和抽象数据库操作的方法。 该数据库操作类可能包含了一系列的函数或方法,用于执行常见的数据库操作,如添加(INSERT)、删除...

    PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】.docx

    标题中的“PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】”指的是一个...总的来说,这个基于PDO的数据库操作类是一个实用工具,简化了多数据库环境下的PHP数据库操作,提高了代码的可维护性和可扩展性。

    php简单数据库操作类.zip

    主要介绍了PHP简单数据库操作类实例,支持增删改查及链式操作,非常适合小型项目的开发使用。 在进行项目开发时,数据库是必不可少的东西了。但是很多时候却又对数据库SQL语句的繁杂而感到头疼。提供一个数据库...

    php中mysql数据库操作类.zip

    为了简化这一过程,开发者通常会创建自定义的数据库操作类。本文将深入探讨PHP中MySQL数据库操作类的设计与应用,以及如何利用此类高效地进行数据库交互。 首先,PHP中的MySQL数据库操作通常基于两种方式:MySQLi...

    php数据库操作类pdo

    php数据库操作类pdo封装的源代码,不用写sql语句,只需要写数据对象po即可

    php封装数据库操作类.zip

    方便快捷, 数据库操作只需调用接口; 2.统一编码(utf8),不易导致乱码 3.结构清晰. 如处理前端请求的后台程序(test.php) 表封装类(user.class.php) 数据库封装类(db.class.php) 配置信息...

Global site tag (gtag.js) - Google Analytics