From: [EMAIL PROTECTED]
Operating system: Linux Slackware 7.1+
PHP version: 4.0.4pl1
PHP Bug Type: ODBC related
Bug description: ODBC_result() fails on DB2 LONG VARCHAR columns
Running on IBM DB2 UDB version 7.1 for Linux, PHP compiled with --with-ibm-db2
configure option.
Given the following table definition:
CREATE TABLE foo (bar1 INTEGER, bar2 LONG VARCHAR)
Connecting to the database:
$conn=odbc_connect("TESTDB", "username", "password");
Inserting data:
$rc=odbc_exec($conn, "INSERT INTO foo VALUES (1, 'This is some really long
data..')");
And then running the following script:
for($i=1;$i<3;$i++) {
$rc=odbc_fetch_row($q, 0);
$result=odbc_result($q, $i);
echo "Data:".$result;
}
The first iteration returns the data from bar1 correctly.
The second iteration will give the following error on the line containing the
ODBC_result() call:
Warning: SQL error: [IBM][CLI Driver] CLI0115E Invalid cursor state.
SQLSTATE=24000, SQL state 24000 in SQLGetData in
/home/ltning/webmail2/functions/test.php on line 10
I have found that I do NOT get this error if I do not use the ODBC_fetch_row()
function prior to the second iteration (moving that line out of the loop). My theory
is that the DB2 engine handles ODBC_fetch_row() & ODBC_result() calls differently when
LONG VARCHAR fields are involved than otherwise, and PHP does not know how to handle
this.
I need to use the ODBC_fetch_row() on every iteration because I'm creating custom
database functions, and there should be nothing directly "wrong" with that. I.e. this
_should_ work..
If I can provide any other information, please tell me.. ;)
Best regards,
Eirik Overby
--
Edit Bug report at: http://bugs.php.net/?id=10469&edit=1
--
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]