2011-05-01 56 views
0

我有以下DQL查詢:Doctrine爲什麼這個查詢返回0行?

$q = Doctrine_Query::create() 
    ->select('id') 
    ->from('Comment') 
    ->where("active='?' AND object_id='?' AND group_name = '?'" 
      , array(1, 1, 'unit')); 

即產生SQL:

SELECT c.id AS c__id, c.group_name AS c__group_name, c.name AS c__name, 
     c.email AS c__email 
    FROM comment c 
WHERE (c.active = '?' AND c.object_id = '?' AND c.group_name = '?') 

bindings: 1, 1, unit 

在數據庫表:

id user_id object_id group_name name active 
1 0  1   unit  test 1 

當我執行它返回0行去查詢。爲什麼?

如果我去phpmyadmin和我跑

SELECT * FROM comment WHERE active=1 AND object_id=1 AND group_name='unit' 

結果包含我期待已久的紀錄。

在phpmyadmin中,由Doctrine生成的查詢將表名稱標識爲'c'。這很奇怪,因爲我在我的應用程序中使用了其他像這樣的DQL查詢並且工作。

謝謝。

回答

1

各地參數佔位符刪除報價:

where("active=? AND object_id=? AND group_name = ?" 

或使用named parameters

where("active= :ative AND object_id= :object_id AND group_name = :group_name" 
     , array(':ative'=>1, ':objet_id'=>1, 'group_name'=>'unit')" 
+0

如果我改變它,我得到一個錯誤,所以我用 '?':「SQLSTATE [HY093]:無效的參數編號:綁定變量的數量與令牌的數量不匹配 – Emanuel 2011-05-01 13:25:24

+0

答案已更新。 – manji 2011-05-01 13:52:22

相關問題