4

私はこの小さなコードを持っています.print_rを作成して正常に動作するため、データベースから正常に受信できることを知っています:

//build query SQL         
$query = $this ->select() 
    ->where('numBedrooms=?',$numBedrooms) 
    ->where('type=?',$type)
    ->where('state=?',$state)
    ->limit(8);//8 rows, with an offset of $recent_page*8-8
//execute query SQL
$rows=$this->fetchAll($query);
//encode json
$var= json_encode($rows);//-------->var is empty always!!
4

3 に答える 3

4

行セットを配列に変換する必要があります。

$var= json_encode($rows->toArray());

http://framework.zend.com/manual/en/zend.db.table.rowset.htmlの「行セットを配列として取得する」を参照してください。

于 2012-07-26T00:43:57.490 に答える
3

これに別の答えを追加するには...

Zend は、データにアクセスするさまざまな方法を提供します。コードの移植性が高まるため、常に Zend で配列を操作する方が簡単だと思います。

Zend_Db_Table_Abstract の使用:

class Model_MyStuff extends Zend_Db_Table_Absract
{
    protected $_name = 'Stuff';
    protected $_primary = 'StuffID';

    function getStuff()
    {
        $select = $this->select();

        $select->where('Active = 1');

        $results = $select->query()->fetchAll();
        if (count($results) > 0) return $results;
        return null;
    }
}

このコードは、json_encode にすぐに渡すことができるオブジェクトの代わりに配列を返します。違いは、オブジェクトに fetchAll($query) を要求しているのに対し、私は select を query()->fetchAll() に要求していることです。ただし、これが機能するには、選択オブジェクトが $this->select() から取得される必要があると思います。

于 2012-09-29T18:08:45.970 に答える
0

あなたが言うように fetchAll() がオブジェクトを返す場合は、まずこれを配列に変換してから json_encode に渡すのが賢明です。json_encode がオブジェクトで機能するとは思いません。

于 2012-07-26T00:38:37.327 に答える