今天图老师小编要跟大家分享用PHP开始你的MVC (二)抽象数据库接口,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!
【 tulaoshi.com - 编程语言 】
二、抽象数据库接口(利用数据操作管理类)
在用mvc模式开发的时候,model层负责数据库的所有操作,为了对数据库的操作进行统一的管理,我们需要定义一个数据库操作管理类,由他来接替所有的数据库操作,也就是整个系统中只有这个数据库操作管理类,可以直接对数据库进行操作,如果其他的类需要对数据库进行操作,那它就必须调用和通过这个类来实现。
下面的Db类就是一个这样的类。
?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 (二)抽象数据库接口》的人还看了以下文章 更多>>