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

一 数据库连接类

创建数据库连接类文件: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];
}
?>





更多相关文章

  1. Log4j2记录日志到数据库(MySQL&MongoDB)
  2. MySQL数据库总结(8)字符集与校对集
  3. 在MySQL数据库中存储无法访问的用户
  4. MySQL是一个非常流行的小型关系型数据库管理系统
  5. 161205、win10安装mysql5.7.16数据库
  6. MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)
  7. 有没有一种方法可以在不破坏外键依赖关系的情况下将MySQL数据库
  8. 数据库中的结果分页如何工作?
  9. MySQL-数据库安装及基本SQL语句

随机推荐

  1. 尝试使用Async任务获取json时的java.lang
  2. 彻底了解RxJava(一)基础知识
  3. Android - 从@drawable String打开资源
  4. 同时兼容高低版本的setBackground跟setTe
  5. Android逆向实例笔记—那些搜不到的中文
  6. Android学习笔记(一):基本概念
  7. Android基础 - 对话框和浮动Activity
  8. 安装使用Android-x86打造快速流畅的Aandr
  9. 赵雅智_setImageResource和setImageBitma
  10. 疯狂android讲义(第三版)总结之 2.11 使用