PLEASE REMOVE OUR ADDRESS FROM THIS LIST!!!
***CONFIDENTIALITY NOTICE: This communication is considered a private and proprietary exchange between Gibson Musical Instruments and its customers, and is intended for the eyes of the original recipient(s) only. This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. *** -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Friday, October 31, 2003 8:35 AM To: [EMAIL PROTECTED] Subject: [PHP-DOC] #25917 [Opn->Ana]: odbc_error() sometimes returns a bad string ID: 25917 Updated by: [EMAIL PROTECTED] Reported By: thorsten at rinne dot info -Status: Open +Status: Analyzed -Bug Type: ODBC related +Bug Type: Documentation problem Operating System: Windows2000 PHP Version: 4CVS, 5CVS New Comment: This is probably a documentation bug (and therefore a misunderstanding on your code) more than a PHP ODBC code bug. What you're seeing happening is an abuse of the odbc_error system really. The odbc_error values are only populated when an internal error is detected (i.e. SQLExecDirect() fails). The catch is they only over- write the values that had been in there previously. As such the each connections last error is never really free'd, so you'll constantly get a copy of the last seen error. Does that make sense? In any case you should be checking the return code for the function you're calling rather than just odbc_error(). Moving to a documentation bug. Previous Comments: ------------------------------------------------------------------------ [2003-10-27 02:28:59] thorsten at rinne dot info Here's my log: SQLQuery: SELECT * FROM TABLE ErrorNum: 4ÃïÏ ErrorMsg: ï Here's the odbc log: [ Process: 924, Thread: 1084 ] [ Date & Time: 27/10/2003 08.23.23.000015 ] [ Product: QDB2/NT DB2 v8.1.3.132 ] [ Level Identifier: 02040106 ] [ CLI Driver Version: 08.01.0000 ] [ Informational Tokens: "DB2 v8.1.3.132","s030728","WR21324","Fixpack 3" ] [0000000924 0000001084] [27/10/2003 08.23.36.934791] SQLExecDirectW( hStmt=1:1, pszSqlStr="SELECT * FROM TABLE" - X"530045004C004500430054002000490044005F004D00410049004C0052004F004F004D002C0020004400450053004300520049005000540049004F004E002C0020005300450052005600450052004E0041004D0045002000460052004F004D0020004D00410049004C0052004F004F004D00", cbSqlStr=-3 ) [0000000924 0000001084] [27/10/2003 08.23.36.935123] [0000000924 0000001084] [27/10/2003 08.23.36.935863] SQLExecDirectW( ) [0000000924 0000001084] [27/10/2003 08.23.36.935972] <--- SQL_SUCCESS ------------------------------------------------------------------------ [2003-10-22 19:49:26] [EMAIL PROTECTED] can you please turn on the logging option in your client, and post the relavent portions to this bug? Under windows it's in the ODBC Administrator. ------------------------------------------------------------------------ [2003-10-22 08:32:47] thorsten at rinne dot info This bug can also reproduced with PHP 4.3.4RC1 and 4.3.4RC2. This happens with INSERTS, UPDATEs and DELETEs, too. ------------------------------------------------------------------------ [2003-10-20 03:49:22] thorsten at rinne dot info Description: ------------ We use IBM DB2 databases on our Windows2000 systems. The bug occured then writing a database class. The odbc_error() function returns sometimes bad strings with special characters. If a real error occurs, the function returns the correct six-digit ODBC state. After that, the error code will not be removed from memory and the error code will be returned on every query although it is correct. Note: var_dump(odbc_error()) returns sometimes bad strings with special characters, sometimes nothing. Reproduce code: --------------- function myquery($query) { $result = odbc_exec($conn, $query); if (odbc_error($conn)) { print "SQLQuery: ".$query; print "ErrorNum: ".odbc_error($conn)); print "ErrorMsg: ".odbc_errormsg($conn)); } return $result; } Expected result: ---------------- The expected result should be empty when no error occured and the six-digit ODBC state when an error occured. After every correct new query, the result should be empty. Actual result: -------------- Here are some results, the queries are correct: SQLQuery: SELECT * FROM SYSTEM ErrorNum: 8¸ÌP· ErrorMsg: Ìx¹Ì or SQLQuery: SELECT * FROM SYSTEM2 ErrorNum: àW PW ErrorMsg: or SQLQuery: SELECT * FROM SYSTEM ErrorNum: ErrorMsg: ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25917&edit=1