我正在使用Zend_Db和Pdo_Mysql驱动程序。此查询不会给出任何结果:
$s = $db->prepare('SELECT ET.id
FROM elementTypes AS ET, language AS L1
WHERE L1.strId = ET.dispName AND L1.language = ?');
$s->execute(array(2));
pr($s->fetchAll());
如果我对参数进行硬编码,则返回预期的行。
这里发生了什么?
编辑:这是一个简化的脚本,甚至更简单的查询:http://pastebin.com/84UtcGGZ
Eidt 2:我进一步深入研究,发现问题出在 PDO并将ENUMS与ints进行比较。看到这个问题:PDO cannot compare mysql ENUM using integers in prepared statements 如果您对如何使其在Zend_Db上运行有任何修复/解决方法,请发布! :)**
答案 0 :(得分:1)
该语句不起作用的原因是L1.language是一个ENUM,你不能将ENUMS与Zend_Db / PDO中的整数进行比较。
为什么以及如何避免这种情况在这个问题中得到了解释:PDO cannot compare mysql ENUM using integers in prepared statements