©
本文檔使用 php中文網手册 發布
(PHP 5, PECL OCI8 >= 1.1.0)
oci_num_rows — 返回语句执行后受影响的行数
$stmt
)oci_num_rows() 返回语句执行后受影响的行数。
Note:
本函数并不返回 SELECT 查询出来的行数!对于 SELECT 语句本函数将返回用 oci_fetch*() 函数取到缓冲区的行数。
Example #1 oci_num_rows() 例子
<?php
echo "<pre>" ;
$conn = oci_connect ( "scott" , "tiger" );
$stmt = oci_parse ( $conn , "create table emp2 as select * from emp" );
oci_execute ( $stmt );
echo oci_num_rows ( $stmt ) . " rows inserted.<br />" ;
oci_free_statement ( $stmt );
$stmt = oci_parse ( $conn , "delete from emp2" );
oci_execute ( $stmt , OCI_DEFAULT );
echo oci_num_rows ( $stmt ) . " rows deleted.<br />" ;
oci_commit ( $conn );
oci_free_statement ( $stmt );
$stmt = oci_parse ( $conn , "drop table emp2" );
oci_execute ( $stmt );
oci_free_statement ( $stmt );
oci_close ( $conn );
echo "</pre>" ;
?>
oci_num_rows() 在出错时返回 FALSE
。
Note:
在 PHP 5.0.0 之前的版本必须使用 ocirowcount() 替代本函数。该函数名仍然可用,为向下兼容作为 oci_num_rows() 的别名。不过其已被废弃,不推荐使用。
[#1] pluueer at hotmail dot com [2010-04-20 02:51:05]
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;
[#2] justin at flakmag dot com [2000-08-26 18:59:46]
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.
[#3] batti at digito dot com [2000-02-16 08:52:50]
this function can be used with select statement, and also return affected number of rows.
But remember this, use this after fetch statement.