ScotlandPHP

oci_num_rows

(PHP 5, PHP 7, 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($stmtOCI_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() 的别名。不过其已被废弃,不推荐使用。

add a note add a note

User Contributed Notes 4 notes

up
1
Dawid Krysiak
10 months ago
oci_num_rows() called after running i.e. TRUNCATE query, always returns 0.
up
-1
pluueer at hotmail dot com
7 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
-7
justin at flakmag dot com
17 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
-12
batti at digito dot com
17 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