PHP数据库类的封装

来源:互联网 发布:暗黑破坏神3 mac 编辑:程序博客网 时间:2024/05/27 20:06

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

一 数据库连接类

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

[php] view plaincopy
  1. <?php  
  2. class ConnDB{               //数据库连接类  
  3.   
  4.     var $dbtype;            //定义成员变量,数据库类型  
  5.     var $host;              //定义成员变量,数据库服务器  
  6.     var $user;              //定义成员变量,服务器用户名  
  7.     var $pwd;               //定义成员变量,服务器密码  
  8.     var $dbname;            //定义数据库名称  
  9.     var $debug;             //定义返回错误信息  
  10.     var $conn;              //定义返回的连接标识  
  11.     function __construct($dbtype,$host,$user,$pwd,$dbname,$debug=false){    //构造方法,为成员变量赋值  
  12.         $this->dbtype=$dbtype;  
  13.         $this->host=$host;  
  14.         $this->user=$user;  
  15.         $this->pwd=$pwd;  
  16.         $this->dbname=$dbname;  
  17.         $this->debug=$debug;  
  18.     }  
  19.     function GetConnId(){                                       //实现与不同数据库的连接并返回连接对象  
  20.     require("../adodb5/adodb.inc.php");                     //调用ADODB类库文件  
  21.             if($this->dbtype=="mysql" || $this->dbtype=="mssql"){     //判断成员变量传递的数据库类型  
  22.                 if($this->dbtype=="mysql")                       //判断如果是MySQL数据库  
  23.                     $this->conn=NewADOConnection("mysql");       //执行与MySQl数据库的连接  
  24.                 else   
  25.                     $this->conn=NewADOConnection("mssql");  
  26.                     $this->conn->Connect($this->host,$this->user,$this->pwd,$this->dbname);   //数据库连接的用户、密码  
  27.         }elseif($this->dbtype=="access"){                        //判断如果使用的是Access数据库  
  28.                     $this->conn=NewADOConnection("access");  
  29.                     $this->conn->Connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=".$this->dbname.";Uid=".$this->user.";Pwd=".$this->pwd.";");  //执行连接Access数据库  
  30.             }  
  31.             $this->conn->Execute("set names gbk");                //设置数据库的编码格式  
  32.             if($this->dbtype=="mysql")  
  33.                     $this->conn->debug=$this->debug;  
  34.             return $this->conn;                              //返回连接对象  
  35.     }  
  36.     function CloseConnId(){                             //定义关闭数据库的方法  
  37.             $this->conn->Disconnect();                            //执行关闭的操作  
  38.     }  
  39. }     
  40. ?>  

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

[php] view plaincopy
  1. <?php  
  2. require("found.database.php");      //包含类文件  
  3. //数据库连接类实例化  
  4. $connobj=new ConnDB("mysql","localhost","root","root","db_database12",true);  
  5. $conn=$connobj->GetConnId();     //返回连接标识  
  6. if($conn){  
  7.     echo "数据库连接成功";  
  8. }else{  
  9.     echo "数据库连接失败!";  
  10. }  
  11.   
  12. ?>  

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

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

二、数据库操作类

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

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

[php] view plaincopy
  1. <?php  
  2. //数据库连接类  
  3. class ConnDB{               //数据库连接类  
  4.   
  5.     var $dbtype;            //定义成员变量,数据库类型  
  6.     var $host;              //定义成员变量,数据库服务器  
  7.     var $user;              //定义成员变量,服务器用户名  
  8.     var $pwd;               //定义成员变量,服务器密码  
  9.     var $dbname;            //定义数据库名称  
  10.     var $debug;             //定义返回错误信息  
  11.     var $conn;              //定义返回的连接标识  
  12.     function __construct($dbtype,$host,$user,$pwd,$dbname,$debug=false){    //构造方法,为成员变量赋值  
  13.         $this->dbtype=$dbtype;  
  14.         $this->host=$host;  
  15.         $this->user=$user;  
  16.         $this->pwd=$pwd;  
  17.         $this->dbname=$dbname;  
  18.         $this->debug=$debug;  
  19.     }  
  20.     function GetConnId(){                                       //实现与不同数据库的连接并返回连接对象  
  21.     require("../adodb5/adodb.inc.php");                     //调用ADODB类库文件  
  22.             if($this->dbtype=="mysql" || $this->dbtype=="mssql"){     //判断成员变量传递的数据库类型  
  23.                 if($this->dbtype=="mysql")                       //判断如果是MySQL数据库  
  24.                     $this->conn=NewADOConnection("mysql");       //执行与MySQl数据库的连接  
  25.                 else   
  26.                     $this->conn=NewADOConnection("mssql");  
  27.                     $this->conn->Connect($this->host,$this->user,$this->pwd,$this->dbname);   //数据库连接的用户、密码  
  28.         }elseif($this->dbtype=="access"){                        //判断如果使用的是Access数据库  
  29.                     $this->conn=NewADOConnection("access");  
  30.                     $this->conn->Connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=".$this->dbname.";Uid=".$this->user.";Pwd=".$this->pwd.";");  //执行连接Access数据库  
  31.             }  
  32.             $this->conn->Execute("set names gbk");                //设置数据库的编码格式  
  33.             if($this->dbtype=="mysql")  
  34.                     $this->conn->debug=$this->debug;  
  35.             return $this->conn;                              //返回连接对象  
  36.     }  
  37.     function CloseConnId(){                             //定义关闭数据库的方法  
  38.             $this->conn->Disconnect();                            //执行关闭的操作  
  39.     }  
  40. }     
  41.   
  42.   
  43. class AdminDB{                  //数据库管理类  
  44.     function ExecSQL($sqlstr,$conn){                    //定义方法,参数为SQl语句和连接数据库返回的对象  
  45.         $sqltype=strtolower(substr(trim($sqlstr),0,6)); //截取SQL中的前6个字符串,并转换成小写  
  46.         $rs=$conn->Execute($sqlstr);                 //执行SQL语句  
  47.         if($sqltype=="select"){                     //判断如果SQL语句的类型为SELECT  
  48.             $array=$rs->GetRows();               //执行该语句,获取查询结果  
  49.             if(count($array)==0 || $rs==false)          //判断语句是否执行成功  
  50.                 return false;                   //如果查询结果为0,或者执行失败,则返回false  
  51.             else  
  52.                 return $array;                  //否则返回查询结果的数组  
  53.         }elseif ($sqltype=="update" || $sqltype=="insert" || $sqltype=="delete"){  
  54.             //判断如果SQL语句类型不为select、则执行如下操作  
  55.             if($rs)  
  56.                 return true;                        //执行成功返回true  
  57.             else   
  58.                 return false;                       //是否返回false  
  59.         }  
  60.     }  
  61. }  
  62.   
  63. ?>  

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

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

[php] view plaincopy
  1. <?php  
  2. require("found.database.php");      //包含类文件  
  3. //数据库连接类实例化  
  4. $connobj=new ConnDB("mysql","localhost","root","root","db_database12",false);  
  5. $conn=$connobj->GetConnId();  
  6. //数据库操作类实例化  
  7. $admindb=new AdminDB();  
  8. ?>  

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

[php] view plaincopy
  1. <?php  
  2. include_once 'conn/connect.database.php';               //调用类中方法  
  3. $array=$admindb->ExecSQL("select * from tb_user where id limit 10 ",$conn);      //分页读取数据库中数据  
  4. for($i=0;$i<count($array);$i++){             //循环输出数据库中数据  
  5.  echo $array[$i][0];  
  6. }  
  7. ?>  
原创粉丝点击