Zend_Db:准备语句不处理参数

时间:2010-09-02 07:03:42

标签: php sql zend-framework pdo zend-db

我正在使用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上运行有任何修复/解决方法,请发布! :)**

1 个答案:

答案 0 :(得分:1)

该语句不起作用的原因是L1.language是一个ENUM,你不能将ENUMS与Zend_Db / PDO中的整数进行比较。

为什么以及如何避免这种情况在这个问题中得到了解释:PDO cannot compare mysql ENUM using integers in prepared statements