【问题标题】:Execute params with doctrine using named parameters使用命名参数执行具有原则的参数
【发布时间】:2011-08-19 04:32:17
【问题描述】:

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

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

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

【问题讨论】:

  • 我有一个 $q->set("next_id", "?", $new_id); $new_id 为空时给出相同的错误消息。嗯...我不知道这是否会有所帮助:o

标签: php doctrine named-parameters


【解决方案1】:

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

尝试替换:

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

到:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 哎,不知道为什么我第一次加了,可惜没了也没啥区别。
    • 奇怪..在查询执行之前尝试在查询对象上调用 getSqlQuery()。
    • 是的,这有点奇怪,当我回显 getSqlQuery() 时,我得到 SELECT e.id_editeur AS e__id_editeur, e.nom_editeur AS e__nom_editeur FROM editeurs e ORDER BY :orderby
    • 你使用哪个教义版本?
    • 我正在使用学说 1.2.4,我找到了一种方法,但我不喜欢它 public function findAll($params) { $query = Doctrine_Query::create() -> from('Editeur e') ->orderBy($params[':orderby']) ->limit($params[':limit']) ->offset($params[':offset']);返回 $query->execute($params); }
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2017-06-01
    • 2011-02-04
    • 2016-05-06
    相关资源
    最近更新 更多