It looks like passing 0 (zero) as a $maxrows parameter is treated identically as -1 value - all the rows are returned.
OCIfetchstatement($stmt, $res, 1, 0, OCI_FETCHSTATEMENT_BY_ROW)
Tested under: PHP 4.4.3, WinXP pro
oci_fetch_all
(PHP 5, PECL oci8:1.1-1.2.3)
oci_fetch_all — Fetches all rows of result data into an array
Popis
int oci_fetch_all ( resource $statement, array &$output [, int $skip [, int $maxrows [, int $flags]]] )Fetches all the rows from a result into a user-defined array.
Pro detaily o mapování datových typů prováděném ovladačem oci8 viz datové typy podporované ovladačem
Seznam parametrů
- statement
A valid OCI statement identifier.
- output
Poznámka: Tato funkce nastavuje pole s hodnotou NULL na hodnotu PHP NULL.
- skip
The number of initial rows to ignore when fetching the result (default value of 0, to start at the first line).
- maxrows
The number of rows to read, starting at the skipth row (default to -1, meaning all the rows).
- flags
Parameter flags can be any combination of the following:
OCI_FETCHSTATEMENT_BY_ROW OCI_FETCHSTATEMENT_BY_COLUMN (default value) OCI_NUM OCI_ASSOC
Návratové hodnoty
Returns the number of rows fetched or FALSE in case of an error.
Příklady
Příklad 1370. oci_fetch_all() example
<?php
/* oci_fetch_all example mbritton at verinet dot com (990624) */
$conn = oci_connect("scott", "tiger");
$stmt = oci_parse($conn, "select * from emp");
oci_execute($stmt);
$nrows = oci_fetch_all($stmt, $results);
if ($nrows > 0) {
echo "<table border=\"1\">\n";
echo "<tr>\n";
foreach ($results as $key => $val) {
echo "<th>$key</th>\n";
}
echo "</tr>\n";
for ($i = 0; $i < $nrows; $i++) {
echo "<tr>\n";
foreach ($results as $data) {
echo "<td>$data[$i]</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
} else {
echo "No data found<br />\n";
}
echo "$nrows Records Selected<br />\n";
oci_free_statement($stmt);
oci_close($conn);
?>
Poznámky
Poznámka: In PHP versions before 5.0.0 you must use ocifetchstatement() instead. This name still can be used, it was left as alias of oci_fetch_all() for downwards compatability. This, however, is deprecated and not recommended.
oci_fetch_all
11-Jul-2007 05:55
07-Feb-2007 07:43
If you want to use more than one flag, you need to use the + to connect them:
<?php
oci_fetch_all($stmt, $row, "0", "-1", OCI_ASSOC+OCI_FETCHSTATEMENT_BY_ROW);
?>
12-Feb-2006 02:46
The number of rows returned is the number actually fetched, not the number potentially available. If one limits the number of rows to fetch, the number of rows returned will be bound by that limit. For example...
$nrows = oci_fetch_all($statement, $results, 0, 1);
would result in a returned value of '0' if there are no rows found for the statement, or '1' if any rows were found, regardless of the number actually present in the database.
