使用命名参数执行带有原则的参数


Execute params with doctrine using 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));

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

无效参数number:个数绑定变量个数不匹配标记

知道原因吗?顺便说一下,如果我用经典的方法直接在函数中填入顺序,极限和偏移量,它是有效的。

参数变量不能包含":"字符…

试试更换:

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

:

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

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

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