0
我正在與CI分頁助手與我的SQL 2008分貝。代碼點火器分頁與SQL Server 2008
凡我對模型的功能是:
function get_data($limit, $offset) {
$billing_db = $this -> load -> database('billing', TRUE);
$billing_db -> select('stuff, stuff2, stuff3');
$billing_db -> from('mytable');
$billing_db -> limit($limit, $offset);
$this -> db -> order_by("id", "asc");
$q = $billing_db -> get();
return $q;
}
現在我控制器上我所謂的功能,如:
$data['billers'] = $this -> billing_model -> get_data(10, $this -> uri -> segment(3));
當我打開默認的頁面會顯示10項正確。
然後問題開始,當我改變頁面,讓我說我點擊下一步。
現在URL段3是10.它應該從第10個條目開始並且限制爲10.
但是最新情況是從條目1開始並顯示20條記錄。
每次偏移量越高,它就會顯示從開始開始的更多記錄。
什麼可能是錯的?
/**
* Limit string
*
* Generates a platform-specific LIMIT clause
*
* @access public
* @param string the sql query string
* @param integer the number of rows to limit the query to
* @param integer the offset value
* @return string
*/
function _limit($sql, $limit, $offset)
{
$i = $limit + $offset;
return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$i.' ', $sql);
}
我想你得到的理由更多,更多記錄是_limit()正在添加要在查詢中使用的偏移量和限制。因此,當你瀏覽它們時,你的頁面正在查詢SELECT TOP 10,SELECT TOP 20,SELECT TOP 30等。我沒有足夠的SQL Server 2008經驗來了解如何正確地進行抵消。 – Samutz 2013-04-26 23:19:32