文字

oci_num_rows

(PHP 5, PECL OCI8 >= 1.1.0)

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

说明

int oci_num_rows ( resource $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.

上一篇: 下一篇: