PHP数据库类的封装
来源:互联网 发布:暗黑破坏神3 mac 编辑:程序博客网 时间:2024/05/27 20:06
我们经常使用数据库操作,如果把数据可的链接和操作写为一个类,将大大提高代码的重用性。
一 数据库连接类
创建数据库连接类文件: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];
- }
- ?>
- php 数据库的封装类
- PHP数据库类的封装
- PHP数据库类的封装
- php---数据库类封装
- php封装操作数据库的类
- php实现封装数据库的类文件
- php封装操作数据库的类
- php封装操作数据库的类
- PHP封装数据库操作类
- PHP数据库操作类封装
- php使用adodb类库操作数据库-类的封装
- 一个php操作数据库的封装类,超实用.
- PHP中面向对象封装的数据库(基)类
- php封装一个简单的数据库操作类
- PHP类的封装
- PHP中对数据库操作的封装
- PHP中对数据库操作的封装
- PHP中对数据库操作的封装
- C#快捷键
- C#获取当前路径的7种方法
- 简单文件传输协议--主机部分--patr1
- 浅谈ANR及如何分析解决ANR
- TYPEERROR
- PHP数据库类的封装
- Php中session_set_save_handler的含义
- 如何正确理解PHP include作用域
- 【mysql】解决MySQL server has gone away问题的两种有效办法
- win7 64位下 pl/sql、toad连接oracle失败的问题
- php中global和$GLOBALS[]的分析之一
- IE10打开网页后,自动设置浏览器模式为“IE10兼容性视图”,我添加了 <meta http-equiv="X-UA-Compatible" content="IE=8">只修改了文档模式,请问如何
- LeetCode: Unique Binary Search Trees, Dynamic Programming
- 解决“多个UITableView的时候不能点击状态栏回到顶部”问题