带有数组的PHP json_encode只返回第一个元素?

时间:2016-04-17 16:37:38

标签: php json

我尝试在JSON中编码某些值,因此我可以在其他应用程序中使用它们,并为它们创建一个Web API 来访问它们。 我有这个SQL方法从我的数据库中获取数据:

function getAllMessages() {
    return getConnection()->query("SELECT * FROM allMessages ORDER BY programTimestamp DESC");
}

我有这个方法来转换在JSON中检索的数据:

while( $row = getAllMessages()->fetch_assoc()) {
        $json[] = $row;
    }
    echo json_encode( $json );

我也试过这个:

echo json_encode(getAllMessages()->fetch_assoc());

我只获取SQL查询返回的第一个元素/值。

1 个答案:

答案 0 :(得分:1)

此代码:

while( $row = getAllMessages()->fetch_assoc() ) {

产生一个无限循环:在每次迭代时,你调用getAllMessages()并获取第一行,所以while永远不会结束,除非你没有结果或布尔(假)结果。

以这种方式改变它:

$rows = getAllMessages();
while( $row = $rows->fetch_assoc() )
{
    ...
}