PHP数据库类的封装

来源:互联网 发布:自考和成考和网络教育 编辑:程序博客网 时间:2024/05/29 09:23

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

一 数据库连接类

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

<?phpclass 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文件中,其代码如下:

<?phprequire("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文件,返回数据库连接的结果。代码如下:

<?phpinclude_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,或者执行失败,则返回falseelsereturn $array;//否则返回查询结果的数组}elseif ($sqltype=="update" || $sqltype=="insert" || $sqltype=="delete"){//判断如果SQL语句类型不为select、则执行如下操作if($rs)    return true;//执行成功返回trueelse     return false;    //是否返回false}}}?>

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

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

<?phprequire("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代码如下:

<?phpinclude_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];}?>





原创粉丝点击