使用命名参数执行带有学说的参数

时间:2011-05-05 08:42:27

标签: php doctrine named-parameters

我遇到了一个关于教条和命名参数的奇怪问题。

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

$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,它就可以工作。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

尝试更换:

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

为:

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