oci_num_rows

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_num_rows返回语句执行后受影响的行数

说明

oci_num_rows(resource $statement): int|false

获取语句执行后受影响的行数。

参数

statement

有效的 OCI 语句标识符。

返回值

返回 int 类型的受影响的行数, 或者在失败时返回 false

示例

示例 #1 oci_num_rows() 示例

<?php

$conn
= oci_connect("hr", "hrpwd", "localhost/XE");
if (!
$conn) {
$m = oci_error();
trigger_error(htmlentities($m['message']), E_USER_ERROR);
}

$stid = oci_parse($conn, "create table emp2 as select * from employees");
oci_execute($stid);
echo
oci_num_rows($stid) . " rows inserted.<br />\n";
oci_free_statement($stid);

$stid = oci_parse($conn, "delete from emp2");
oci_execute($stid, OCI_DEFAULT);
echo
oci_num_rows($stid) . " rows deleted.<br />\n";
oci_commit($conn);
oci_free_statement($stid);

$stid = oci_parse($conn, "drop table emp2");
oci_execute($stid);
oci_free_statement($stid);

oci_close($conn);

?>

注释

注意:

本函数并不返回 SELECT 查询出来的行数!对于 SELECT 语句本函数将返回用 oci_fetch*() 函数从缓冲区获取的行数。

add a note add a note

User Contributed Notes 5 notes

up
0
pluueer at hotmail dot com
13 years ago
If you want to return te number of rows without fetching all data it might by more efficient to use this code (correct me if I'm wrong):

$sql_query = 'SELECT COUNT(*) AS NUMBER_OF_ROWS FROM (' . $your_query . ')';

$stmt= oci_parse($conn, $sql_query);

oci_define_by_name($stmt, 'NUMBER_OF_ROWS', $number_of_rows);

oci_execute($stmt);

oci_fetch($stmt);

echo $number_of_rows;
up
-5
Dawid Krysiak
6 years ago
oci_num_rows() called after running i.e. TRUNCATE query, always returns 0.
up
-2
raywachaga at gmail dot com
5 years ago
<?php if ( oci_num_rows($result) == false ?>

You can use the snippet above to test out if a select statement returned any rows, it won't do a count but it comes in handy
up
-12
justin at flakmag dot com
23 years ago
It appears the easiest workaround if you want to get numrows without moving to the end of the result set is to use:

numrows = OCIFetchStatement(...);
OCIExecute(...);

So that the execute re-executes the query. It's horribly inefficient to query twice, but it works.
up
-23
batti at digito dot com
23 years ago
this function can be used with select statement, and also return affected number of rows.
But remember this, use this after fetch statement.
To Top