From: nate-php at seekio dot com
Operating system: Ubuntu 5.10
PHP version: 5.1.1
PHP Bug Type: PDO related
Bug description: Type mismatch with bind variables
Description:
------------
In PHP 5.1.1 bind variables no longer seem to work with the ODBC PDO
driver connecting to DB2. The same code that worked fine in 5.1.0 and
previous now throws an exception in 5.1.1 and php5.1-200512222130 CVS
snapshot:
The query I'm running is:
insert into nate.testdb values (?, ?)
The table is specified as:
create table tb.testdb (a int, b varchar(50))
Exception at line 13 of file testdb.php: SQLSTATE[22005]: Error in
assignment: -99999 [IBM][CLI Driver] CLI0112E Error in assignment.
SQLSTATE=22005 (SQLExecute[-99999] at
/usr/local/src/php-5.1.1/ext/pdo_odbc/odbc_stmt.c:133)
I looked up the db2 error code CLI0112E and this is what it said:
CLI0112E Error in assignment.
Explanation:
The data sent for a parameter or column was incompatible with the data
type of the associated table column.
User Response:
Respecify the output binding through SQLBindCol or SQLGetData or the input
binding through SQLSetParam or SQLBindParameter.
Reproduce code:
---------------
try {
$db = new PDO('odbc:sample', 'webdb', 'xxx');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Connect failed: " . $e->getMessage() . "\n");
}
try {
$query = "insert into nate.testdb values (?, ?)";
$sth = $db->prepare($query);
$sth->execute(array(1, 'foobar'))
} catch (Exception $e) {
die("Exception at line " . $e->getLine() . " of file " . $e->getFile() .
": " . $e->getMessage() . "\n");
}
Expected result:
----------------
a row is inserted with the values of 1, and foobar in the a and b columns
Actual result:
--------------
Exception at line 13 of file testdb.php: SQLSTATE[22005]: Error in
assignment: -99999 [IBM][CLI Driver] CLI0112E Error in assignment.
SQLSTATE=22005 (SQLExecute[-99999] at
/usr/local/src/php-5.1.1/ext/pdo_odbc/odbc_stmt.c:133)
and no row is inserted.
--
Edit bug report at http://bugs.php.net/?id=35830&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=35830&r=trysnapshot44
Try a CVS snapshot (PHP 5.1):
http://bugs.php.net/fix.php?id=35830&r=trysnapshot51
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=35830&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=35830&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=35830&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=35830&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=35830&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=35830&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=35830&r=support
Expected behavior: http://bugs.php.net/fix.php?id=35830&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=35830&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=35830&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=35830&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=35830&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=35830&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=35830&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=35830&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=35830&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=35830&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=35830&r=mysqlcfg