#27672 [Opn->Fbk]: oci_error() doesn't return a error if oci_execute() errored.

From: Date: Wed, 24 Mar 2004 13:28:49 +0000
Subject: #27672 [Opn->Fbk]: oci_error() doesn't return a error if oci_execute() errored.
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-56760@lists.php.net to get a copy of this message
ID: 27672 Updated by: tony2001@php.net Reported By: powerblade at mail dot dk -Status: Open +Status: Feedback Bug Type: *General Issues Operating System: Windows XP PHP Version: 5CVS-2004-03-24 (dev) New Comment: Your code works fine for me. It returns: --- Warning: oci_execute() [function.oci-execute.html]: OCIStmtExecute: ORA-00900: invalid SQL statement in /www/index.php on line 27 Fatal error: Uncaught exception 'DatabaseException' with message '[] Can't execute query. ' in /www/index.php:31 Stack trace: #0 {main} thrown in /www/index.php on line 31 --- >oci_parse() - Validates the SQL statement. However this always returns true so it can't be trusted. no, this is not true. it does return false, if something went wrong. >...and then use oci_error() to get the error, you don't get the error string it outputs to the screen. Please, re-check it twice. This is false too. And, please, provide more information about your system. What version of Oracle & Oracle client do you use? Previous Comments: ------------------------------------------------------------------------ [2004-03-24 08:14:22] powerblade at mail dot dk Description: ------------ When executing a statement it goes as this: oci_parse() - Validates the SQL statement. However this always returns true so it can't be trusted. oci_execute() - Executes the query. If anything goes wrong, it simply outputs it to the screen. If you put a @ infront to avoid the warning and then use oci_error() to get the error, you don't get the error string it outputs to the screen. Reproduce code: --------------- $query = 'XYZZYX'; /* Invalid SQL string */ $stmt = oci_parse($this->connection, $query); $aError = oci_error(); if($aError) { throw new DatabaseException("[".$aError['code']."] Can't parse query. ".$aError['message']); } $return = oci_execute($stmt); if($return === FALSE) { $aError = @oci_error(); throw new DatabaseException("[".$aError['code']."] Can't execute query. ".$aError['message']); } Expected result: ---------------- Uncaught exception with the string: [error code] Can't parse query. [error msg] or [error code] Can't execute query. [error msg] Actual result: -------------- Uncaught exception with the string: [] Can't execute query [] ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27672&edit=1

« previous php.bugs (#56760) next »