json_encode在我的php中什么也没做

时间:2012-07-26 00:34:02

标签: php json

我有这个小代码,我知道我从数据库收到的很好,因为我做了一些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!!

3 个答案:

答案 0 :(得分:4)

您需要将行集转换为数组:

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

请参阅http://framework.zend.com/manual/en/zend.db.table.rowset.html

上的将行检索为数组

答案 1 :(得分: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),而我正在选择查询() - > fetchAll()。我认为选择对象需要来自$ this-> select()才能使其工作。

答案 2 :(得分:0)

如果fetchAll()返回一个像你说的那样的对象,那么首先将它转换为数组然后将其传递给json_encode是明智的。我不相信json_encode与对象一起工作。