Edit report at http://bugs.php.net/bug.php?id=51291&edit=1
ID: 51291
Updated by: [email protected]
Reported by: sumariva at gmail dot com
Summary: oci_error dont report last error when called two times
-Status: Assigned
+Status: Closed
Type: Documentation Problem
Package: OCI8 related
PHP Version: Irrelevant
Assigned To: sixd
New Comment:
This bug has been fixed in SVN.
Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
Thank you for the report, and for helping us make PHP better.
Fixed in OCI8 1.4.2 onwards.
Previous Comments:
------------------------------------------------------------------------
[2010-03-24 23:08:57] [email protected]
Automatic comment from SVN on behalf of sixd
Revision: http://svn.php.net/viewvc/?view=revision&revision=296754
Log: Fixed bug #51291 (oci_error doesn't report last error when called
two times)
------------------------------------------------------------------------
[2010-03-14 22:46:08] [email protected]
Chris, is this a documentation issue or a bug in OCI8?
------------------------------------------------------------------------
[2010-03-13 16:04:35] sumariva at gmail dot com
Description:
------------
The documentation should add a note that the function or oracle
change/resets the oracle error flag at each call when a resource
statement passed in. If you call it two times with same statement
resource parameter the second call get no error.
Test script:
---------------
<?php $ociUser = 'system';
$ociPass = 'mudar123';
$hostAddress = '192.168.1.43';
$ociConnString =
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST='.$hostAddress.')(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)))';
$ociDbHandler = oci_connect( $ociUser, $ociPass, $ociConnString );
if ( !$ociDbHandler )
{ #call oci_error without args to check for connection errors
var_dump( __LINE__, oci_error() );
exit();
}
//sample from website
$stmt = @oci_parse( $ociDbHandler, "select ' from dual"); // note
mismatched quote
if ( !$stmt )
{
var_dump( __LINE__, oci_error( $ociDbHandler ) ); // For oci_parse
errors pass the connection handle
var_dump( __LINE__, oci_error( $ociDbHandler ) );
}
$stmt = 'select TABLE_NAME from ALL_TAB_COLUMNS, ALL_TAB_COLUMNS clone
where ALL_TAB_COLUMNS.TABLE_NAME = clone.TABLE_NAME';
$stmt = @oci_parse( $ociDbHandler, $stmt );
$flag = @oci_execute( $stmt, OCI_DEFAULT ); // note duplicated column
name
if ( !$flag )
{ #here the error message is not displayed on second call
var_dump( __LINE__, oci_error(), oci_error( $ociDbHandler ),
oci_error( $stmt ), $stmt ); // For oci_parse errors pass the connection
handle
var_dump( __LINE__, oci_error(), oci_error( $ociDbHandler ),
oci_error( $stmt ), $stmt ); // For oci_parse errors pass the connection
handle
exit;
}
exit( 'end' ); ?>
Expected result:
----------------
Expected that each call on same resource reported the same errors.
Actual result:
--------------
int(27) bool(false) bool(false) array(4) { ["code"]=> int(918)
["message"]=> string(37) "ORA-00918: column ambiguously defined"
["offset"]=> int(7) ["sqltext"]=> string(113) "select TABLE_NAME from
ALL_TAB_COLUMNS, ALL_TAB_COLUMNS clone where ALL_TAB_COLUMNS.TABLE_NAME
= clone.TABLE_NAME" } resource(2) of type (oci8 statement)
int(28) bool(false) bool(false) bool(false) resource(2) of type (oci8
statement)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=51291&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.