2

我在教义和命名参数方面遇到了一个奇怪的问题。

这是一个查询,它实际上与这组参数完美配合(在我的代码中是动态的):

$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));

即使它是相同的机制,我也会收到以下错误

无效的参数号:绑定变量的数量与标记的数量不匹配

知道原因吗?顺便说一句,如果我以经典方式直接在函数中填充 orderby、limit 和 offset,它就可以工作。

4

2 回答 2

2

params var 不能包含“:”字符...

尝试更换:

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

至:

$params = array(    'id_editeur' => 1,
                'nom_editeur' => 'Test');
于 2013-04-17T22:35:53.060 回答
0

尝试删除 params 数组中的括号。

$params = array(    ':orderby' => 'e.id_editeur ASC',
                    ':limit' => '10',
                    ':offset' => '20');
于 2011-05-05T15:11:38.597 回答