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