0

我有一个创建类实例的页面。此类获取有关用户(他们的徽章)的一些信息,但是当我返回对象时,我只得到第一条记录。下面的一些代码。

$badges = new Badges;

$result = $badges->getBadges($userID);
$row_array[] = $result;
echo json_encode($row_array);


class Badges
{
    function getBadges($userID)
    {
        $get_badge_query = mysqli_query($GLOBALS['connect'], "SELECT * FROM tbl_my_badges WHERE user_id = '" . $userID . "'");

        while($get_badge_result = mysqli_fetch_assoc($get_badge_query)) {
            $result = array("done" => "true",
                            "badge_icon" => $get_badge_result['badge_icon'],
                            "badge_text" => $get_badge_result['badge_message']);

        }
        return $result;
    }
}

我尝试在循环外添加一个数组变量并用结果填充它并返回变量但仍然不起作用。

任何帮助都会很棒。

4

1 回答 1

2

您需要将结果累积到一个数组中,然后返回:

$results = array();
while($get_badge_result = mysqli_fetch_assoc($get_badge_query)) {
    $results[] = array("done" => "true",
                    "badge_icon" => $get_badge_result['badge_icon'],
                    "badge_text" => $get_badge_result['badge_message']);
}
return $results;

否则,您只是$result在每次迭代时覆盖该变量,并且它将始终设置为数据库中的最后一条记录。

于 2013-06-27T02:16:35.640 回答