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:
48
pear/DB.php
48
pear/DB.php
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user