ID: 10181
User Update by: [EMAIL PROTECTED]
Old-Status: Feedback
Status: Open
Bug Type: ODBC related
Operating system: Linux
PHP Version: 4.0.4pl1
Description: odbc_result causes Unexpected network read error

After some debugging of the ODBC module of php we have 
discoverd that the SQLExtendedFetch function of the 
OpenLink-progress driver is buggy. 

an query like:
select * from table where field='text'

will give us a valid result set, but an query like:

select * from table where field='12345'

will give us garbage: The driver does not set the 
'result->values' arrays (but it returns SUCCESS and sets 
the correct number of collumns etc.) this results in 
variables which
are pointing to some non-set, non-terminating strings ...

The reason why python and the example programm work is 
that they don't use the SQLExtendedFetch function but 
SQLFetch.

The fix for this problem is to undefine the 
HAVE_SQL_EXTENDED_FETCH definition in php_odbc.h
at the iODBC definitions (if you use iODBC with openlink)
or else at the OpenLink definitions.

Maybe the php folks can give an extra option for 
openlink-progress ? so this can be solved more accurate?

Thanks.









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

[2001-06-21 11:20:57] [EMAIL PROTECTED]

best way to debug is to build as a CGI and set a break in the function you think might 
be causing it.  then run and step through the code.  

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

[2001-06-13 09:03:53] [EMAIL PROTECTED]

Version 4.0.5 has exactly the same problem. Could this be a problem with type 
conversion? How should I debug?

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

[2001-06-10 16:11:35] [EMAIL PROTECTED]

you can look in the ext/odbc/php_odbc.c file for what might 
be causing this.  the ext/odbc/php_odbc.h may also be of 
some help.

also you might wish to try the 4.0.5 release of PHP, or 
possibly the 4.0.6RCs (4.0.5 was in RC for a LONG time).

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

[2001-06-01 17:23:40] [EMAIL PROTECTED]

Hitting the refresh button on the browser will return different results each time. The 
number of rows seems correct. It doesn't look like a problem with the drivers since 
they work fine with Python or the test programm included with the driver. Could this 
be a problem with type casting? Where should I look in the PHP source code?

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

[2001-05-02 05:08:20] [EMAIL PROTECTED]

Sorry about the incorrect library names. The details are:

the openlink odbc driver is oplodbc.so.1.0.0
the iodbc driver manager is libiodbc.so.2.0.12 as packaged with the openlink odbc sdk.

This morning I got the newest version 3.0.4 working of libiodbc. The driver is still 
the same oplodbc.so.1.0.0 and libiodbc now has version libiodbc.so.2.1.3. 
I still have the same problem!!

NB
It took me a while to figure out the odbc_connect has changed: Before I had to use:


$dsn = "DSN=qaddb";
if ($conn_id = odbc_connect("$dsn","","")) {
    ...

Now this has to be:

$dsn = "qaddb";
if ($conn_id = odbc_connect("$dsn","","")) {
    ...



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

The remainder of the comments for this report are too long.
To view the rest of the comments, please
view the bug report online.

Full Bug description available at: http://bugs.php.net/?id=10181


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to