我有这个小代码,我知道我从数据库中收到的很好,因为我做了一些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!!发布于 2012-07-26 08:38:37
如果fetchAll()像您所说的那样返回一个对象,那么明智的做法是先将其转换为数组,然后再将其传递给json_encode。我不相信json_encode是和对象打交道的。
发布于 2012-07-26 08:43:57
您需要将行集转换为数组:
$var= json_encode($rows->toArray());
请参见在http://framework.zend.com/manual/en/zend.db.table.rowset.html上将行集作为数组进行检索
发布于 2012-09-30 02:08:46
为了给这个问题添加一个不同的答案...
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中的对象。不同之处在于您请求对象查询($query),而我使用select to fetchAll()->fetchAll()。我认为select对象需要来自$ this ->select()才能正常工作。
https://stackoverflow.com/questions/11660741
复制相似问题