1
0
mirror of https://github.com/php/php-src.git synced 2026-04-09 09:03:04 +02:00

- Added row limit support for fetchInto and fetchRow

- Added getRowCounter method for DB_result to get the row number
  you are fetching in limited queries
This commit is contained in:
Tomas V.V.Cox
2001-11-01 15:14:17 +00:00
parent 2830e45fe7
commit fa15d6069c

View File

@@ -600,6 +600,7 @@ class DB_result
{
var $dbh;
var $result;
var $row_counter = null;
/**
* DB_result constructor.
@@ -629,6 +630,27 @@ class DB_result
$fetchmode = DB_FETCHMODE_ASSOC;
$return_object = true;
}
if ($this->dbh->limit_from !== null) {
if ($this->row_counter === null) {
$this->row_counter = $this->dbh->limit_from;
// For Interbase
if ($this->dbh->options['limit'] == false) {
$i = 0;
while ($i++ <= $this->dbh->limit_from) {
$this->dbh->fetchInto($this->result, $arr, $fetchmode);
}
}
}
if ($this->row_counter >= (
$this->dbh->limit_from + $this->dbh->limit_count))
{
return null;
}
if ($this->dbh->options['limit'] == 'emulate') {
$rownum = $this->row_counter;
}
$this->row_counter++;
}
$res = $this->dbh->fetchInto($this->result, $arr, $fetchmode, $rownum);
if ($res !== DB_OK) {
return $res;
@@ -660,6 +682,27 @@ class DB_result
$fetchmode = DB_FETCHMODE_ASSOC;
$return_object = true;
}
if ($this->dbh->limit_from !== null) {
if ($this->row_counter === null) {
$this->row_counter = $this->dbh->limit_from;
// For Interbase
if ($this->dbh->options['limit'] == false) {
$i = 0;
while ($i++ <= $this->dbh->limit_from) {
$this->dbh->fetchInto($this->result, $arr, $fetchmode);
}
}
}
if ($this->row_counter >= (
$this->dbh->limit_from + $this->dbh->limit_count))
{
return null;
}
if ($this->dbh->options['limit'] == 'emulate') {
$rownum = $this->row_counter;
}
$this->row_counter++;
}
$res = $this->dbh->fetchInto($this->result, $arr, $fetchmode, $rownum);
if (($res === DB_OK) && isset($return_object)) {
$class = $this->dbh->fetchmode_object_class;
@@ -716,6 +759,11 @@ class DB_result
{
return $this->dbh->tableInfo($this->result, $mode);
}
function getRowCounter()
{
return $this->row_counter;
}
}
class DB_row