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 = 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 に答える