ID: 36578
Updated by: [EMAIL PROTECTED]
Reported By: terry at bitsoup dot com
-Status: Open
+Status: Bogus
Bug Type: PDO related
Operating System: Windows XP
PHP Version: 5.1.2
New Comment:
> statement->error = 0; /* OCI_NO_DATA is NO error for us!!! */
This line talks for itself.
>You have it on the TODO list to handle the fetch case properly.
No, I don't have such item in my TODO list.
Please stop reopening this report.
If you consider such case as an error - you have to handle it yourself,
while others will continue using usual semantics - error is error and
"no data" is just no data.
Previous Comments:
------------------------------------------------------------------------
[2006-03-02 19:51:29] terry at bitsoup dot com
That's because you are currently discarding the error in oci8. You have
it on the TODO list to handle the fetch case properly.
if ((statement->error == OCI_NO_DATA) || (nrows == 0)) {
if (statement->last_query == 0) {
/* reset define-list for refcursors */
if (statement->columns) {
zend_hash_destroy(statement->columns);
efree(statement->columns);
statement->columns = 0;
statement->ncolumns = 0;
}
statement->executed = 0;
}
statement->error = 0; /* OCI_NO_DATA is NO error for us!!! */
statement->has_data = 0;
return 0;
}
------------------------------------------------------------------------
[2006-03-02 17:51:03] [EMAIL PROTECTED]
$s = oci_parse($c, "select 1 from dual where 1 = 2");
oci_execute($s);
var_dump(oci_fetch($s));
=>
bool(false) and no error.
------------------------------------------------------------------------
[2006-03-02 17:25:21] terry at bitsoup dot com
The empty resultset is not the error. Calling fetch() on an empty
resultset sets the error code to a warning and/or generates an
exception in every database engine I've seen.
In Oracle, it's error ORA-1403: no data found.
It's SQL_NODATA in ODBC drivers.
I believe it's Error 2053 in MySQL. mysql_stmt_fetch() returns
MYSQL_NO_DATA, and not 0 for success.
In it's current state, fetch() returning null without raising the
exception means we'll have to add the test and throw the exception
manually on every single query.
------------------------------------------------------------------------
[2006-03-02 08:42:51] [EMAIL PROTECTED]
Empty resultset is not an error, it's a common situation.
No bug here.
------------------------------------------------------------------------
[2006-03-01 20:01:39] terry at bitsoup dot com
Sorry, error code should be 02, not 20
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/36578
--
Edit this bug report at http://bugs.php.net/?id=36578&edit=1