【发布时间】:2014-08-04 10:07:12
【问题描述】:
我能够使用带有 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);
返回一个空数组。
我也尝试过使用命名参数 (...where A3ANCD=:id),但也没有用。
我试过摆弄所有 PDO 属性,但没有任何运气。
代码在其他 ODBC 设置上运行良好 - 混合使用 unixODBC、DB2 和 PDO 会发生什么巫术来阻止此查询运行?以及如何打败它以使其屈服?
【问题讨论】:
-
id ?- 这是什么? -
我在清理字段名称以使其可读时出现拼写错误。现已修复。
-
好吧,改正所有其他错别字,你就可以搞定了。
-
@hjpotter92 从学习PDO开始PLEASE
-
...如果它在配置中,那么我怀疑我们是否有足够的信息来帮助您 - 即,您为配置的其余部分设置了什么?您的第一个示例查询仍然包含一个错字(显然返回结果的那个) - 您没有结束撇号/单引号。如果您尝试通过对这两个查询执行
UNION来获取两行(并且只为其中一个查询提供参数),会发生什么?还是加入什么的?
标签: pdo db2 odbc prepared-statement