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と、反復ごとに変数を上書きするだけで、常に DB の最後のレコードに設定されます。

于 2013-06-27T02:16:35.640 に答える