今天图老师小编要跟大家分享用PHP开始你的MVC (二)抽象数据库接口,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!
【 tulaoshi.com - 编程语言 】
二、抽象数据库接口(利用数据操作管理类)
在用mvc模式开发的时候,model层负责数据库的所有操作,为了对数据库的操作进行统一的管理,我们需要定义一个数据库操作管理类,由他来接替所有的数据库操作,也就是整个系统中只有这个数据库操作管理类,可以直接对数据库进行操作,如果其他的类需要对数据库进行操作,那它就必须调用和通过这个类来实现。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)下面的Db类就是一个这样的类。
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)?php
/**************************************************************
* descript : mysql数据库操作管理类
*
* author : 大龄青年
* Email :wenadmin@sina.com
* qq : 303015292
* msn : wenguangqing@hotmail.com
*************************************************************/
/*
* example 1: 获取序列
* ?
* $db = new Db();
* $result = $db-getSeq('art_id', 2, 1);
* ?
*/
/*
* example 2: 分页查询
* ?
* $db = new Db();
* $result = $db-&queryPage('select id,name from table', 2, 10, DB_FETCH_ASSOC);
* foreach($result as $row)
* echo $row['id'],'------'.$row['name'].'br';
* ?
*/
/*
* example 3: 插入数据
* ?
* $db = new Db();
* $result = $db-execute("insert into table (id, name) values(1,'name')");
* if($result0) echo '插入数据成功';
* else echo '插入数据失败';
* ?
*/
/*
* 定义数据库联接选项
* @var DB_HOST string 数据库主机名称或地址
* @var DB_NAME string 数据库名称
* @var DB_USER string 数据库用户名称
* @var DB_PWD string 数据库用户的密码
* @var DB_PCONNECT boolean 是否建立持久连接
*/
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_USER', 'root');
define('DB_PWD', '');
define('DB_PCONNECT', true);
/*
*定义返回数据查询结果的类型
* @var DB_FETCH_ASSOC int 结果调用方式:$result['name']
* @var DB_FETCH_NUM int 结果调用方式:$result[0]
* @var DB_FETCH_BOTH int 结果调用方式:$result['name'] 或 $result[0]
* @var DB_FETCH_OBJECT int 结果调用方式:$result-name
*/
define('DB_FETCH_ASSOC', 0);
define('DB_FETCH_NUM', 1);
define('DB_FETCH_BOTH', 2);
define('DB_FETCH_OBJECT', 3);
/*
*定义默认序列发生器的名称
*/
define('DB_SEQUENCE_TABLENAME', 'sequences');
class Db{
/*
* 当前数据库联接选项
*/
var $dbHost = DB_HOST;
var $dbName = DB_NAME;
var $dbType = 'Mysql';
var $dbUser = DB_USER;
var $dbPwd = DB_PWD;
var $pcnn = DB_PCONNECT;
/*
* 当前数据库连接
*/
var $cnn = '';
/*
* 数据查询结果的返回类型
*/
var $queryFetchType = DB_FETCH_ASSOC;
/*
* 初始化函数
*/
function Db(){
$this-cnn = ($this-pcnn? mysql_connect($this-dbHost, $this-dbUser, $this-dbPwd):
mysql_connect($this-dbHost, $this-dbUser, $this-dbPwd)) or
$this-_halt('数据库连接错误');
mysql_select_db($this-dbName, $this-cnn) or $this-_halt('数据库选择错误');
}
/*
* 数据查询函数
*
* @param $sql string 数据查询语句
* @param $fetchType int 数据查询结果的返回类型
*
* @return array 数据查询结果
*/
function &query($sql, $fetchType=DB_FETCH_ASSOC){
$data = array();
$rs = &mysql_query($sql, $this-cnn) or $this-_halt('数据查询错误', $sql);
$exe = $this-_getCommand($fetchType);
while($row=&$exe($rs))
$data[] = &$row;
return $data;
}
/*
* 分页数据查询函数
*
* @param $sql string 数据查询语句
* @param $page int 当前预查询页码
* @param $pageSize int 每页显示多少条纪录
* @param $fetchType int 数据查询结果的返回类型
*
* 数据查询结果,以及数据的分页信息
* @return array('pageSize' = 每页显示的条数
* 'recordCount' = 总纪录数
* 'pageCount' = 总页数
* 'page' = 当前页码
* 'isFirst' = 是否第一页
* 'isLast' = 是否最后一页
* 'start' = 返回结果的第一条纪录的序号
* 'sql' = 查询的sql语句
* 'data' = 查询得到的数据结果
* )
* 数据查询结果,以及数据的分页信息
*/
function _getCommand($fetchType){
switch($fetchType){
case DB_FETCH_ASSOC: $exe = 'mysql_fetch_assoc'; break;
case DB_FETCH_NUM: $exe = 'mysql_fetch_row'; break;
case DB_FETCH_BOTH: $exe = 'mysql_fetch_array'; break;
case DB_FETCH_OBJECT: $exe = 'mysql_fetch_object'; break;
default: $exe = 'mysql_fetch_array'; break;
}
return $exe;
}
function _halt($msg){
$errNo = mysql_errno($this-cnn);
$errStr = mysql_error($this-cnn);
die("数据库错误:$msgbr $errNo : $errStr");
}
}
?
来源:http://www.tulaoshi.com/n/20160219/1618810.html
看过《用PHP开始你的MVC (二)抽象数据库接口》的人还看了以下文章 更多>>