-2

私は次のものを持っています:

public function getAll($limit = 100)
{   
    //if ($thread != 0) { $threadq = "WHERE threadId=$threadId"; }

    $query = <<<EOF
    SELECT 
        x.*
    FROM x

    ORDER BY dater DESC
    LIMIT ?
EOF;
    return self::$db->fetchAll($query, $limit);
}   

LIMIT xに変わるLIMIT 'x'ようで、MySQL クエリ パーサーがうまくいかず、文句を言います。

ただし、うまくLIMIT $limit動作します

これが機能しないのはなぜですか?これを行う別の方法はありますか?

4

2 に答える 2

4

置換パラメーターは、単一の場合でも配列内にある必要があります。

return self::$db->fetchAll($query, array($limit));

そして、クエリの制限部分では、使用する必要はありませんか? 代わりのワイルドカード!

于 2012-08-09T18:15:02.090 に答える
2

私は気が狂ってしまうので、簡単にZend_Db_Selectを使用することをお勧めします。これは単純なクエリのようです。

このデモンストレーションでは、デフォルトのZF DbTableをアダプターとして使用します (簡単に使用できますZend_Db_Table::getDefaultAdapter();) が、ほぼすべてのタイプのクエリに適応させることができます。

<?php

class Application_Model_DbTable_User extends Zend_Db_Table_Abstract
{
    protected $_name = 'user';
    protected $_primary = 'id';

public function getAll($limit = 100)
{
    $select = $this->select();//This is the adapter for this table and implies SELECT * FROM user 
    $select->order('name', 'DESC') //can also pass an array of columns
           ->limit($limit);//limit has a second arg for offset

    return $this->fetchAll($select);//returns a rowset object, if an array is required append ->toArray to the fetchall().
}   
}
于 2012-08-10T16:56:33.783 に答える