pear: Pager_Wrapper PDO扩展

 /* *
 * PDO Database Wrapper of PEAR Pager
 * 
 * @param resource $db The PDO object
 * @param string $query SQL Statement
 * @param array $pager_options Options of pager
 * @param boolean $disabled Whether use pager,true will use ,or not use 
 * @param int $fetchMode
 
*/

function Pager_Wrapper_PDO(&$db, $query, $pager_options = array(), $disabled = false, $fetchMode = PDO:: FETCH_ASSOC){
 
if (!array_key_exists('totalItems', $pager_options
)) {
   
if ($countQuery = rewriteCountQuery($query
)) {
    
$stmt = $db->prepare($countQuery
);
    
$stmt->
execute();
    
$totalItems = $stmt->
fetchColumn();
   }
else
{
    
$stmt = $db->prepare($query
);
    
$stmt->
execute();
    
$rows = $stmt->fetchAll(PDO::
FETCH_COLUMN);
    
$totalItems = count($rows
);
   }
   
$pager_options['totalItems'= $totalItems
;
 }
    
require_once 'Pager/Pager.php'
;
    
$pager = Pager::factory($pager_options
);

    
$page = array
();
    
$page['links'= $pager->
links;
    
$page['totalItems'= $pager_options['totalItems'
];
    
$page['page_numbers'= array
(
        
'current' => $pager->getCurrentPageID(),

        
'total'   => $pager-> numPages()
    );
    
list($page['from'], $page['to']) = $pager->
getOffsetByPageId();
    
$page['limit'= $page['to'- $page['from'+1
;
    
    
//
 fix offset
    // limit 1,10 can not retrive the first record of result set.

    $page['from'= $page['from'- 1 ;
    
    
if (!$disabled
) {
  
$query .= 'LIMIT ' . $page['from'. '' . $pager_options['perPage'
];
    }
//    var_dump($query);

 $stmt = $db->prepare($query );
 
$stmt->
execute();
 
$page['data'= $stmt->fetchAll($fetchMode
);    
    
if ($disabled
) {
        
$page['links'= ''
;
        
$page['page_numbers'= array
(
            
'current' => 1,

            
'total'   => 1
        );
    }   
    
//    var_dump($pager);
    return $page ;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值