Bug #10469: ODBC_result() fails on DB2 LONG VARCHAR columns
| From: | ltning at anduin dot net | Date: | Tue, 24 Apr 2001 08:32:50 +0000 |
| Subject: | Bug #10469: ODBC_result() fails on DB2 LONG VARCHAR columns | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-52260@lists.php.net to get a copy of this message | ||
From: ltning@anduin.net
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