我有一个页面,可以创建一个类的实例。这个类获取有关用户(他们的徽章)的一些信息,但是当我返回对象时,我只得到第一个记录。下面是一些代码。
$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;
}
}
我已经尝试在循环外添加一个数组变量并用结果填充它并返回变量但仍然不起作用。
任何帮助都会很棒。
答案 0 :(得分: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
变量,并且它将始终设置为数据库中的最后一条记录。