2011-05-05 38 views
1

我遇到了教義和命名參數的奇怪問題。使用命名參數使用教義執行參數

這裏是一個真正與這組參數完美的作品查詢(在我的代碼動態):

$params = array( ':id_editeur' => 1, 
        ':nom_editeur' => 'Test'); 

public function updateById($params) 
{ 
    Doctrine_Query::create() 
     ->update('Editeur e') 
     ->set('e.nom_editeur', ':nom_editeur') 
     ->where('e.id_editeur = :id_editeur') 
     ->execute($params); 
} 

現在我有另一個功能

public function findAll($params) 
{ 
    $query = Doctrine_Query::create() 
     ->from('Editeur e') 
     ->orderBy(':orderby') 
     ->limit(':limit') 
     ->offset(':offset'); 

    return $query->execute($params); 
} 

使用這些參數:

$params = array( ':orderby' => ('e.id_editeur ASC'), 
         ':limit' => (10), 
         ':offset' => (20)); 

即使它是相同的機制我得到以下錯誤

非法參數編號: 約束變量的數量不符令牌

數 的原因,你知道嗎?順便說一句,如果我以經典方式直接在函數中填充order,限制和偏移量,它就可以工作。

+0

我有一個>設置$ Q-( 「next_id」,「?」,$ new_id);給出與$ new_id爲空的相同錯誤消息。哼哼......我不知道這是否會有所幫助:o – mika 2014-05-06 13:26:35

回答

0

嘗試刪除params數組中的括號。

$params = array( ':orderby' => 'e.id_editeur ASC', 
        ':limit' => '10', 
        ':offset' => '20'); 
+0

嘿,我不知道爲什麼我第一次添加它們,但遺憾的是沒有它,沒有區別。 – 2011-05-05 21:00:12

+0

奇怪.. 嘗試在查詢執行前調用查詢對象上的getSqlQuery()。 – 2011-05-05 22:29:29

+0

是的,它有點奇怪,當我回聲getSqlQuery()我得到 SELECT e.id_editeur AS e__id_editeur,e.nom_editeur AS e__nom_editeur FROM editeurs e ORDER BY:orderby – 2011-05-06 08:14:38

0

的PARAMS VAR不能包含 「:」 字符...

嘗試更換:

$params = array( ':id_editeur' => 1, 
       ':nom_editeur' => 'Test'); 

到:

$params = array( 'id_editeur' => 1, 
       'nom_editeur' => 'Test');