diff options
-rw-r--r-- | system/database/DB_query_builder.php | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/system/database/DB_query_builder.php b/system/database/DB_query_builder.php index ef375227c..2e1003395 100644 --- a/system/database/DB_query_builder.php +++ b/system/database/DB_query_builder.php @@ -1488,6 +1488,15 @@ abstract class CI_DB_query_builder extends CI_DB_driver { $this->qb_orderby = NULL; } + //ignore LIMIT + if ($this->qb_limit OR $this->qb_offset) + { + $limit = $this->qb_limit; + $this->qb_limit = NULL; + $offset = $this->qb_offset; + $this->qb_offset = NULL; + } + $result = ($this->qb_distinct === TRUE OR ! empty($this->qb_groupby) OR ! empty($this->qb_cache_groupby)) ? $this->query($this->_count_string.$this->protect_identifiers('numrows')."\nFROM (\n".$this->_compile_select()."\n) CI_count_all_results") : $this->query($this->_compile_select($this->_count_string.$this->protect_identifiers('numrows'))); @@ -1496,10 +1505,19 @@ abstract class CI_DB_query_builder extends CI_DB_driver { { $this->_reset_select(); } - // If we've previously reset the qb_orderby values, get them back - elseif ( ! isset($this->qb_orderby)) + // If we've previously reset the qb_orderby,qb_limit or qb_offset values, get them back + else { - $this->qb_orderby = $orderby; + if ( ! isset($this->qb_orderby)) + { + $this->qb_orderby = $orderby; + } + + if ( ! isset($this->qb_limit)) + { + $this->qb_limit = $limit; + $this->qb_offset = $offset; + } } if ($result->num_rows() === 0) |