ID: 25118 User updated by: php at jschreiber dot com Reported By: php at jschreiber dot com Status: Open Bug Type: ODBC related Operating System: GNU/Linux (Gentoo) PHP Version: 4.3.2 New Comment:
I looked at my last trace one more time and saw that SQLBindParameter( hStmt=1:1, iPar=1, fParamType=SQL_PARAM_INPUT, fCType=SQL_C_CHAR, fSQLType=SQL_BLOB, cbColDef=1048576, ibScale=0, rgbValue=&0000000a, cbValueM ax=0, pcbValue=&0820563c ) ---> Time elapsed - +6.810000E-004 seconds is being called with fCType=SQL_C_CHAR instead of SQL_BINARY. So I applied a part of Clara Lius patch to the code and changed the line containg SQL_LEN_DATA_AT_EXEC as described in my last comment. Now my "blobtest" script runs fine!! But the problem seems not to be totally solved - the odbc-test that comes with php seems to "hang" on some statements--sometimes it works, sometimes not... Anyway, I think that was a step in the right direction, so here is my patch: http://www.jschreiber.com/php/blobtest/blob-patch.txt Jan Previous Comments: ------------------------------------------------------------------------ [2003-09-08 08:56:51] php at jschreiber dot com Hi! I still have the problem, that I can't store BLOBs in my database. Now, I tried it with the "old' PHP 4.3.2 on a Solaris machine with IBM DB/2 V8.1 Fixpack 3 installed, but that didn't work either. So I started to investigate /ext/odbc/php_odbc.c. The problem seems to be located in the odbc_execute function. All my investigations were done with the 4.3.2-version of that file (or better: v 1.143.2.9 2003/05/02), but I saw, that there was no major difference to today's cvs version (at least not in the odbc_execute function). One of the problems was, that the while loop that calls SQLPutData was never called, since SQLExecute(result->stmt) returned SQL_SUCCESS and not SQL_NEED_DATA as expected. Okay, why is this so? After the file that shall be put in the BLOB field was opened some lines above (still in odbc_execute), you call params[i-1].vallen = SQL_LEN_DATA_AT_EXEC(0); According to the DB/2 CLI documentation, SQL_LEN_DATA_AT_EXEC is only needed for bulk inserts and requires an update or insert via SQLBulkOperations(). So I changed this line to params[i-1].vallen = SQL_DATA_AT_EXEC; And--voila--the SQLExecute returned SQL_NEED_DATA and the loop was executed. But there still is a problem, which I could not fix: SQLPutData now returns [IBM][CLI Driver] CLI0112E Error in assignment. SQLSTATE=22005 May this has something to do with the stuff that Clara tried to fix with her patch. Do you have any ideas? I put the trace to http://www.jschreiber.com/php/blobtest/db2trace3.txt Jan ------------------------------------------------------------------------ [2003-08-28 05:02:05] php at jschreiber dot com Sorry, guys...! It still doesn't work. I tried it with my "blobtest" (http://www.jschreiber.com/php/blobtest/). the insert statement gets executed, but the blob only contains an empty value (x''). I uploaded a new db2 trace to http://www.jschreiber.com/php/blobtest/db2trace_new.txt I hope that helps you!! Again, thank you for trying to fix that. Jan ------------------------------------------------------------------------ [2003-08-28 04:55:49] [EMAIL PROTECTED] Typo fixed. Thanks. :) But does this version fix your original problem..? ------------------------------------------------------------------------ [2003-08-28 03:42:01] php at jschreiber dot com I downloaded php5 directly from cvs (using the gentoo php-cvs portage), and there seems to be a typo in php5/ext/odbc/php_odbc.c, line 1433: 433c1433 < sql_c-type = SQL_C_BINARY; --- > sql_c_type = SQL_C_BINARY; ------------------------------------------------------------------------ [2003-08-28 03:16:16] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/25118 -- Edit this bug report at http://bugs.php.net/?id=25118&edit=1