Doctrine Query Where子句生成的未知列错误

时间:2011-06-23 09:40:07

标签: php doctrine

我有以下查询:

return Doctrine_Query::create()
         ->from('Model_Article m')
         ->where($where)
         ->orderBy($order);

$where我有这个:

$where='m.title='.$name;

以上产生此错误:

Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sadsa' in 'where clause'. Failing Query: "SELECT COUNT(*) AS num_results FROM article a WHERE a.title = sadsa"

为什么?

1 个答案:

答案 0 :(得分:2)

错误是因为生成的查询看起来像“** where title = sadsda **”,因此SQL引擎会查找名为“sadsda”的列。为了防止它,你必须提到,你想要与字符串比较,而不是列值。您可以使用您的引擎规则(通常用“'”括起来),但它不安全,我认为您应该使用占位符引擎,该原则提供,例如

$whereKey = 'm.title=?';
$whereValue = 'sadsda';
Doctrine_Query::create()->from('Model_Article m')->where($whereKey,$whereValue)->orderBy($order);