首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >json_encode在我的php中什么也没做。

json_encode在我的php中什么也没做。
EN

Stack Overflow用户
提问于 2012-07-26 08:34:02
回答 3查看 317关注 0票数 4

我有这个小代码,我知道我从数据库中收到的很好,因为我做了一些print_r,并且工作得很好:

代码语言:javascript
复制
//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!!
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-26 08:38:37

如果fetchAll()像您所说的那样返回一个对象,那么明智的做法是先将其转换为数组,然后再将其传递给json_encode。我不相信json_encode是和对象打交道的。

票数 0
EN

Stack Overflow用户

发布于 2012-07-26 08:43:57

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

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

请参见在http://framework.zend.com/manual/en/zend.db.table.rowset.html上将行集作为数组进行检索

票数 4
EN

Stack Overflow用户

发布于 2012-09-30 02:08:46

为了给这个问题添加一个不同的答案...

Zend提供了不同的数据访问方式。我发现在Zend中总是使用数组更容易,因为它使您的代码更容易移植。

使用Zend_Db_Table_Abstract:

代码语言:javascript
复制
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中的对象。不同之处在于您请求对象查询($query),而我使用select to fetchAll()->fetchAll()。我认为select对象需要来自$ this ->select()才能正常工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11660741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档