ID:               27672
 Updated by:       [EMAIL PROTECTED]
 Reported By:      powerblade at mail dot dk
-Status:           Assigned
+Status:           Closed
 Bug Type:         Documentation problem
 Operating System: Windows XP
 PHP Version:      5CVS-2004-03-24 (dev)
 Assigned To:      tony2001
 New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.




Previous Comments:
------------------------------------------------------------------------

[2004-03-25 02:02:38] [EMAIL PROTECTED]

You can use old names as well.

They are still available as aliases of new functions.

------------------------------------------------------------------------

[2004-03-24 11:09:45] powerblade at mail dot dk

Just checked it out.

It seems your right. 

It's a documentation problem only. But still enough to confuse some
people. :)

You already confused me by changing all the function names a few weeks
ago.

------------------------------------------------------------------------

[2004-03-24 11:01:13] [EMAIL PROTECTED]

you need to pass $stmt to oci_error(); in this case.

so, your code will look like this:

<?



/* ... */

$query = 'XYZZYX'; /* Invalid SQL string */



$stmt = oci_parse($this->connection, $query);



$return = @oci_execute($stmt);



if($return === FALSE)

{

    $aError = oci_error($stmt); //$stmt here

    throw new DatabaseException("[".$aError['code']."] Can't execute

query. ".$aError['message']);

}



?>



Requalifying as documentation problem and assigning to myself..

------------------------------------------------------------------------

[2004-03-24 10:48:26] powerblade at mail dot dk

Not only the documentation.

See my #2.



-----



2) Where is the oracle error message in the exception? I need that
info

for debugging.



-----



If you look in the exception you get:



-----------------------

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

--------------------------------



The oracle error message and code is not included in the exception. 

Even though in the code it threw the exception with the following
statement:

throw new DatabaseException("[".$aError['code']."] Can't execute

query. ".$aError['message']);   

The only way to grab the oracle error is to set up a custom error
handler. You can't use oci_error() to retrieve it.

------------------------------------------------------------------------

[2004-03-24 10:40:49] [EMAIL PROTECTED]

Aha, now I see...

It seems to me, that our manual lies about validation.



That's what OCI docs say about oci_parse (OciStmtPrepare() indeed):

--

An application requests a SQL or PL/SQL statement to be prepared for
execution using the OCIStmtPrepare() call and passing it a previously
allocated statement handle. This is a completely local call, requiring
no round trip to the server.

--



oci_parse will return false only if there is some problems with oracle
connection.

The only way to validate query is to execute it.



So, I need to change the documentation.

Right?

------------------------------------------------------------------------

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/27672

-- 
Edit this bug report at http://bugs.php.net/?id=27672&edit=1

Reply via email to