龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用PHP开始你的MVC (二)抽象数据库接口(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
function queryPage($sql, $page=1, $pageSize=20, $fetchType=DB_FETCH_ASSOC){ $countSql = preg_replace(|SELECT.*FROM|i,SELECT COUNT(*) count FROM, $sql); $data[pageSize] = (int)$pageSize1? 20: (int)$pag
    function &queryPage($sql, $page=1, $pageSize=20, $fetchType=DB_FETCH_ASSOC){
        $countSql = preg_replace('|SELECT.*FROM|i','SELECT COUNT(*) count FROM', $sql);
        $data['pageSize'] = (int)$pageSize<1? 20: (int)$pageSize;
        $data['recordCount'] = $this->getOne($countSql, 'count');
        $data['pageCount'] = ceil($data['recordCount']/$data['pageSize']);
        $data['page'] = $data['pageCount']==0? 0: ((int)$page<1? 1: (int)$page);
        $data['page'] = $data['page']>$data['pageCount']? $data['pageCount']:$data['page'];
        $data['isFirst'] = $data['page']>1? false: true;
        $data['isLast'] = $data['page']<$data['pageCount']? false: true;
        $data['start'] = ($data['page']==0)? 1: ($data['page']-1)*$data['pageSize']+1;
        $data['sql'] = $sql.' LIMIT '.($data['start']-1).','.$data['pageSize'];
        $data['data'] = &$this->query($data['sql'], $fetchType);
        return $data;
    }
    /*
     *  进行数据查询只返回第 1 行的数据
     *
     * @param $sql        string  数据查询语句
     * @param $fetchType  int     数据查询结果的返回类型
     *
     * @return            array   数据查询结果
     */
    function &queryRow($sql, $fetchType=DB_FETCH_ASSOC){
        $rs = &mysql_query($sql, $this->cnn) or $this->_halt('单行数据查询错误', $sql);
        $exe = $this->_getCommand($fetchType);
        return $exe($rs);
    }
    /*
     *  进行数据查询只返回第 1 行第 n 列的数据
     *
     * @param $sql        string  数据查询语句
     * @param $field      int     返回数据列的名称 或 数字序号
     *
     * @return            string  返回单个字段的值
     */
    function &getOne($sql, $field = 0){
        $rs = &mysql_query($sql, $this->cnn) or $this->_halt('单个数据查询错误', $sql);
        $row = mysql_fetch_array($rs);
        return $row[$field];
    }
    /*
     *  进行sql语句,包含 DELECT / INSERT / UPDATE.....的执行语句
     *
     * @param $sql        string  数据查询语句
     *
     * @return            string  返回该语句影响的数据行数
     */
    function execute($sql){
        $rs = mysql_query($sql) or $this->_halt('语句执行错误', $sql);
        return mysql_affected_rows($this->cnn);
    }
    /*
     *  得到最后一次插入数据的编号
     */
    function getInsertId(){
        return mysql_insert_id($this->cnn);
    }
    /*
     *  序列发生器,用来生成不重复的序列值
     *
     * @param $fieldName    string  序列的名称
     * @param $step         int     序列号间隔
     * @param $start        int     序列号的起始数值
     *
     * @return              int     新的序列值
     */
精彩图集

赞助商链接