PDO Prepared语句不返回记录

时间:2014-06-13 19:00:50

标签: pdo db2 odbc prepared-statement

我能够使用带有ODBC驱动程序的PDO连接到我的DB2数据库。我能够运行查询并获得结果,但是预处理语句什么都不返回(没有错误)。

此代码:

$pdo = new PDO("odbc:thingy","user","password");
$stmt = $pdo->prepare("SELECT * FROM PROD.JMA3REP WHERE A3ANCD = 'DH 33-00'");
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
dd ($rows);

返回一条记录。完美。

此代码:

$pdo = new PDO("odbc:thingy","user","password");
$stmt = $pdo->prepare("SELECT * FROM PROD.JMA3REP WHERE A3ANCD = ?");
$stmt->execute(array('DH 33-00'));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
dd ($rows);

返回一个空数组。

我也尝试过使用命名参数(......其中A3ANCD =:id)并且也没有使用过。

我试图摆弄所有PDO属性并且没有运气。

代码在其他ODBC设置上运行良好 - 混合unixODBC,DB2和PDO会发生什么voodoo以防止此查询运行?我怎么把它打成提交?

1 个答案:

答案 0 :(得分:1)

所以似乎64位Linux架构上的pdo_odbc是错误的,而且我不是第一个遇到这个错误的人:

https://stackoverflow.com/a/18535989/1676

该解决方案似乎使用32位odbc驱动程序。