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);
(PHP 5, PECL OCI8 >= 1.1.0)
oci_num_rows — Returns number of rows affected during statement execution
Gets the number of rows affected during statement execution.
A valid OCI statement identifier.
Returns the number of rows affected as an integer, or FALSE on errors.
Example #1 oci_num_rows() example
$conn = oci_connect("scott", "tiger");
$stmt = oci_parse($conn, "create table emp2 as select * from emp");
echo oci_num_rows($stmt) . " rows inserted.<br />";
$stmt = oci_parse($conn, "delete from emp2");
echo oci_num_rows($stmt) . " rows deleted.<br />";
$stmt = oci_parse($conn, "drop table emp2");
This function does not return number of rows selected! For SELECT statements this function will return the number of rows, that were fetched to the buffer with oci_fetch*() functions.
In PHP versions before 5.0.0 you must use ocirowcount() instead. This name still can be used, it was left as alias of oci_num_rows() for downwards compatability. This, however, is deprecated and not recommended.
here'is an example who works:
$connexion = ("name_bd","pass_db"); //set up connexion on database
$query="select * from order "; // query for the test
$parse = ociparse($connexion,$query); // parse query
ociexecute($pase); // execute the query on server (on temporary memory)
ocifetchstatement($pase,$tab_result); // the result will be fetched in the table $tab_result
echo ocirowcount($parse); // show the numbers of result
/**** and if you want to posting the results of query ***/
$count = count($tab_result);
you can also do it with the function ociresult():
echo ociresult($parse,"[capital letter of the name of feild that you want to show on naviator]");
Attention : all of name of tables on oracle database are in capital letter when you use an other application for connect to it.
to select the field no_client on table client, on your script of posting, you should write :
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(...);
So that the execute re-executes the query. It's horribly inefficient to query twice, but it works.