diff options
author | Andreas Fischer <bantu@phpbb.com> | 2012-05-09 12:50:13 +0200 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2012-05-09 12:50:13 +0200 |
commit | 12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139 (patch) | |
tree | dad98e4d4eeb68c795a3776614173f26daa5ef62 /phpBB/includes/db/dbal.php | |
parent | c0718fae96a991182f3941dee02599077b5b447d (diff) | |
parent | 09d49fb7b2be51a29f5a03c0a1a3816d7e55a466 (diff) | |
download | forums-12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139.tar forums-12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139.tar.gz forums-12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139.tar.bz2 forums-12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139.tar.xz forums-12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139.zip |
Merge remote-tracking branch 'Noxwizard/ticket/10858' into develop-olympus
* Noxwizard/ticket/10858:
[ticket/10858] Move generic row seeking to DBAL
[ticket/10858] Tests for row seeking with fetchfield()
[ticket/10858] Fix MSSQL Native's row seeking behavior
Diffstat (limited to 'phpBB/includes/db/dbal.php')
-rw-r--r-- | phpBB/includes/db/dbal.php | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/phpBB/includes/db/dbal.php b/phpBB/includes/db/dbal.php index 5d456c2ff0..358df50402 100644 --- a/phpBB/includes/db/dbal.php +++ b/phpBB/includes/db/dbal.php @@ -195,6 +195,49 @@ class dbal } /** + * Seek to given row number + * rownum is zero-based + */ + function sql_rowseek($rownum, &$query_id) + { + global $cache; + + if ($query_id === false) + { + $query_id = $this->query_result; + } + + if (isset($cache->sql_rowset[$query_id])) + { + return $cache->sql_rowseek($rownum, $query_id); + } + + if ($query_id === false) + { + return false; + } + + $this->sql_freeresult($query_id); + $query_id = $this->sql_query($this->last_query_text); + + if ($query_id === false) + { + return false; + } + + // We do not fetch the row for rownum == 0 because then the next resultset would be the second row + for ($i = 0; $i < $rownum; $i++) + { + if (!$this->sql_fetchrow($query_id)) + { + return false; + } + } + + return true; + } + + /** * Fetch field * if rownum is false, the current row is used, else it is pointing to the row (zero-based) */ |