PHP数据库类的封装

我们经常使用数据库操作,如果把数据可的链接和操作写为一个类,将大大提高代码的重用性。

一 数据库连接类

创建数据库连接类文件:found.database.php,并存储与根目录下的conn文件中。数据库连接文件的代码如下:

<?php
class ConnDB{				//数据库连接类

	var $dbtype;			//定义成员变量,数据库类型
	var $host;				//定义成员变量,数据库服务器
    var $user;				//定义成员变量,服务器用户名
    var $pwd;				//定义成员变量,服务器密码
    var $dbname;			//定义数据库名称
    var $debug;				//定义返回错误信息
    var $conn;    			//定义返回的连接标识
    function __construct($dbtype,$host,$user,$pwd,$dbname,$debug=false){	//构造方法,为成员变量赋值
		$this->dbtype=$dbtype;
    	$this->host=$host;
		$this->user=$user;
		$this->pwd=$pwd;
		$this->dbname=$dbname;
		$this->debug=$debug;
	}
    function GetConnId(){		    							//实现与不同数据库的连接并返回连接对象
  	require("../adodb5/adodb.inc.php");						//调用ADODB类库文件
    		if($this->dbtype=="mysql" || $this->dbtype=="mssql"){		//判断成员变量传递的数据库类型
    			if($this->dbtype=="mysql")						//判断如果是MySQL数据库
    		   		$this->conn=NewADOConnection("mysql");		//执行与MySQl数据库的连接
    			else 
    	       		$this->conn=NewADOConnection("mssql");
    	    		$this->conn->Connect($this->host,$this->user,$this->pwd,$this->dbname);	//数据库连接的用户、密码
		}elseif($this->dbtype=="access"){						//判断如果使用的是Access数据库
    	    		$this->conn=NewADOConnection("access");
    	    		$this->conn->Connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=".$this->dbname.";Uid=".$this->user.";Pwd=".$this->pwd.";");	//执行连接Access数据库
    		}
    		$this->conn->Execute("set names gbk");				//设置数据库的编码格式
    		if($this->dbtype=="mysql")
    	    		$this->conn->debug=$this->debug;
    		return $this->conn;								//返回连接对象
    }
	function CloseConnId(){								//定义关闭数据库的方法
    		$this->conn->Disconnect();							//执行关闭的操作
    }
}	
?>

数据库连接类创建成功后,对类惊醒实例化操作,并传递相应的参数。这里将实例化操作存储到conn文件夹的connect.database.php文件中,其代码如下:

<?php
require("found.database.php");		//包含类文件
//数据库连接类实例化
$connobj=new ConnDB("mysql","localhost","root","root","db_database12",true);
$conn=$connobj->GetConnId();		//返回连接标识
if($conn){
	echo "数据库连接成功";
}else{
	echo "数据库连接失败!";
}

?>

创建index.php文件,通过include_once语句包含connect.database.php文件,返回数据库连接的结果。代码如下:

<?php
include_once 'conn/connect.database.php';			//包含数据库连接和操作类的实例化文件
?>

二、数据库操作类

下面编写一个数据库操作类,这样就可以在程序中实现与数据库的交互了。

将数据库的操作类也存储在found.database.php文件中。插入Admin类后found.database.php的完整代码如下:

<?php
//数据库连接类
class ConnDB{				//数据库连接类

	var $dbtype;			//定义成员变量,数据库类型
	var $host;				//定义成员变量,数据库服务器
    var $user;				//定义成员变量,服务器用户名
    var $pwd;				//定义成员变量,服务器密码
    var $dbname;			//定义数据库名称
    var $debug;				//定义返回错误信息
    var $conn;    			//定义返回的连接标识
    function __construct($dbtype,$host,$user,$pwd,$dbname,$debug=false){	//构造方法,为成员变量赋值
		$this->dbtype=$dbtype;
    	$this->host=$host;
		$this->user=$user;
		$this->pwd=$pwd;
		$this->dbname=$dbname;
		$this->debug=$debug;
	}
    function GetConnId(){		    							//实现与不同数据库的连接并返回连接对象
  	require("../adodb5/adodb.inc.php");						//调用ADODB类库文件
    		if($this->dbtype=="mysql" || $this->dbtype=="mssql"){		//判断成员变量传递的数据库类型
    			if($this->dbtype=="mysql")						//判断如果是MySQL数据库
    		   		$this->conn=NewADOConnection("mysql");		//执行与MySQl数据库的连接
    			else 
    	       		$this->conn=NewADOConnection("mssql");
    	    		$this->conn->Connect($this->host,$this->user,$this->pwd,$this->dbname);	//数据库连接的用户、密码
		}elseif($this->dbtype=="access"){						//判断如果使用的是Access数据库
    	    		$this->conn=NewADOConnection("access");
    	    		$this->conn->Connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=".$this->dbname.";Uid=".$this->user.";Pwd=".$this->pwd.";");	//执行连接Access数据库
    		}
    		$this->conn->Execute("set names gbk");				//设置数据库的编码格式
    		if($this->dbtype=="mysql")
    	    		$this->conn->debug=$this->debug;
    		return $this->conn;								//返回连接对象
    }
	function CloseConnId(){								//定义关闭数据库的方法
    		$this->conn->Disconnect();							//执行关闭的操作
    }
}	


class AdminDB{					//数据库管理类
	function ExecSQL($sqlstr,$conn){					//定义方法,参数为SQl语句和连接数据库返回的对象
		$sqltype=strtolower(substr(trim($sqlstr),0,6));	//截取SQL中的前6个字符串,并转换成小写
		$rs=$conn->Execute($sqlstr);					//执行SQL语句
		if($sqltype=="select"){						//判断如果SQL语句的类型为SELECT
			$array=$rs->GetRows();				//执行该语句,获取查询结果
			if(count($array)==0 || $rs==false)			//判断语句是否执行成功
				return false;					//如果查询结果为0,或者执行失败,则返回false
			else
				return $array;					//否则返回查询结果的数组
		}elseif ($sqltype=="update" || $sqltype=="insert" || $sqltype=="delete"){
			//判断如果SQL语句类型不为select、则执行如下操作
			if($rs)
			    return true;						//执行成功返回true
			else 
			    return false;    					//是否返回false
		}
	}
}

?>

在Admin类中定义ExecSQL()方法,其中包括两个参数,一个是执行的SQL语句,另一个是数据库连接成功后的连接标识。

Admin类创建成功后同样需要进行类的实例化操作,并将其也存储在conn文件夹的connect.database.php文件中,代码如下:

<?php
require("found.database.php");		//包含类文件
//数据库连接类实例化
$connobj=new ConnDB("mysql","localhost","root","root","db_database12",false);
$conn=$connobj->GetConnId();
//数据库操作类实例化
$admindb=new AdminDB();
?>

创建index.php文件,通过include_once语句包含数据库操作类的实例化文件,调用类中的数据库操作方法,执行查询操作,并数据查询结果。index.php代码如下:

<?php
include_once 'conn/connect.database.php';				//调用类中方法
$array=$admindb->ExecSQL("select * from tb_user where id limit 10 ",$conn);		//分页读取数据库中数据
for($i=0;$i<count($array);$i++){				//循环输出数据库中数据
 echo $array[$i][0];
}
?>





  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值