|   | php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login | 
| 
  [2003-06-18 06:50 UTC] bl at btn dot de
 Description:
------------
We use the IBMDB2 database on our systems. The following bug occured while writing a class supposed to halt the code on database exceptions. 
While checking for strlen(odbc_errormsg())==0 for aborting the routine PHP sometimes (about once in four calls) returns Bad Strings (see below).
Maybe the "message" is taken from an unallocated space on PHP's heap ?!?
It's not that much of a problem to come up with a workaround but PHP shouldn't return random bits of the memory.
Reproduce code:
---------------
$link = odbc_connect("mydb", "myusr","mypwd");
$sql = "[INSERT FLAWLESS STATEMENT HERE]";
odbc_exec($link,$sql)
if(strlen(odbc_errormsg())>0) {
    echo "SQL-Error " . odbc_errormsg();
}
odbc_close($link);
Expected result:
----------------
If $sql contains a valid statement odbc_errormsg() should return an empty string (according to the PHP-Documentation)
Actual result:
--------------
Sometimes parts of the outstream, a URL, short binary data, PHP-Variable names anything might happen ... as I mentioned above, the data might be part of PHP's heap. Some Examples:
T_URI (?) or
(a variable name ?)
ze:12px; } .menue_common{ [... here it goes on for quite a while ...] width: 140px; margin-bottom: 2p 
(part of our stylesheet) or
?? or
(junk)
?? or
(more junk)
aten_I or
(I have that somewhere earlier but I can't remember)
-urlencoded
(this shouldn't be an errormsg)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits             | |||||||||||||||||||||||||||||||||||||
|  Copyright © 2001-2025 The PHP Group All rights reserved. | Last updated: Fri Oct 31 08:00:01 2025 UTC | 
I thought I did have a problem running odbc_error() but it looks like it's been clean everytime but as you can see the errormsg seems to get random stuff. I'll post to this bug if I see the problem again while useing odbc_error() I've just ran into this problem myself. it's with db2. the error is usually less frequent for me but sometimes it will happen many times in a row. this is the code I used to get the random garbage. $conn_id = odbc_connect("netmap","user","pass"); $err=odbc_errormsg($conn_id); if($err) { var_dump(odbc_error()); print ">".$err."<"; } this is the output of an error. >@\y????? 5Kbz????>^o??????5Pl????? 0E[r?????/Nn??????+E`|????,@Uk?????!?^~?????? ";Up? This also happens: I just added the var_dump(odbc_error())here: string(0) "" >My Company Ltd [SSL_SERVER_I_DN_CN] => zoop@lone.ath.cx [SSL_SERVER_I_DN_EMAILADDRESS] => zoop@lone.ath.cx [SSL_SERVER_M_SERIAL] => 05 [SSL_SERVER_V_START] => Oct 13 22:08:48 2004 GMT [SSL_SERVER_V_END] => Oct 13 22:08:48 2005 GMT [SSL_SERVER_M_VERSION] => 3 [GATEWAY_IN? this one is also odd it seems to be loading other php files and spitting them out here not sure how. this page wasn't being accessed when this error occured. this is an a line for another .php file on the system. string(0) "" >r:cwa2.jar:. blueAuth ".escapeshellcmd($user)." ".escapeshellcmd($pass)." \"".escapeshellcmd($group) 3 Another: string(0) "" >?? I now changed the script to be a connect of course first.: var_dump(odbc_error()); $err=odbc_errormsg($conn_id); if($err) { print ">".$err."<"; } string(0) "" >??