我能够使用带有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以防止此查询运行?我怎么把它打成提交?
答案 0 :(得分:1)
所以似乎64位Linux架构上的pdo_odbc是错误的,而且我不是第一个遇到这个错误的人:
https://stackoverflow.com/a/18535989/1676
该解决方案似乎使用32位odbc驱动程序。