From 9f6da3c2f11535fee09dd306ae6b884168e4623b Mon Sep 17 00:00:00 2001 From: tianhe1986 Date: Thu, 15 Jun 2017 11:45:39 +0800 Subject: Ignore LIMIT when using CI_DB_query_builder::count_all_results Signed-off-by: tianhe1986 --- system/database/DB_query_builder.php | 24 +++++++++++++++++++++--- 1 file 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) -- cgit v1.2.3-24-g4f1b