aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/db/dbal.php
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2012-05-09 12:50:13 +0200
committerAndreas Fischer <bantu@phpbb.com>2012-05-09 12:50:13 +0200
commit12dbcc7f1e13f71b96a5aa31ece4632fb1eb4139 (patch)
treedad98e4d4eeb68c795a3776614173f26daa5ef62 /phpBB/includes/db/dbal.php
parentc0718fae96a991182f3941dee02599077b5b447d (diff)
parent09d49fb7b2be51a29f5a03c0a1a3816d7e55a466 (diff)
downloadforums-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.php43
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)
*/