-1

JSONデータの複数の行を取得して表示しようとしましたが、すべての行を取得することはできません.データベーステーブルの一番上(最初の)行しか取得できません.そして、取得したJSONデータをいくつかに配置する方法について混乱しています.配列の並べ替えと個々の行へのアクセス?

問題に関連するコードを提供しました。はい、この質問を投稿する前に十分な調査を行いました.実際に私の質問に似た質問を1つ見つけましたが、誰も答えていないので、この投稿を作成しています.

ありがとうございました

以下は、UserFunctions.java クラスから getAllFreebies 関数を呼び出して JSONdata を取得しようとしている Freebies.java クラスのコードです。

UserFunctions uf = new UserFunctions();
JSONObject json = uf.getAllFreebies();
System.out.println(json);

以下は、クラス UserFunctions.java の関数 getAllFreebies() のコードです。

public JSONObject getAllFreebies(){
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", getAllFreebies_tag));
    JSONObject json = jsonParser.getJSONFromUrl(getAllFreebiesURL,params);
    return json;
}

以下は、DB_Function.php ファイルから getFreebies() 関数を呼び出している index.php のコードです。

else if($tag = 'getAllFreebies'){
                    $getAllFreebies = $db->getFreebies($username,$catagory,$subcatagory,$title,$condition,$description,$address,$city,$state,$country,$zipcode,$posted_on);
                    if($getAllFreebies)
                    {
            $response["success"] = 1;
            $response["getAllFreebies"]["username"] = $getAllFreebies["username"];
            $response["getAllFreebies"]["catagory"] = $getAllFreebies["catagory"];
            $response["getAllFreebies"]["subcatagory"] = $getAllFreebies["subcatagory"];
            $response["getAllFreebies"]["title"] = $getAllFreebies["title"];
            $response["getAllFreebies"]["item_condition"] = $getAllFreebies["item_condition"];
            $response["getAllFreebies"]["description"] = $getAllFreebies["description"];
            $response["getAllFreebies"]["address"] = $getAllFreebies["address"];
            $response["getAllFreebies"]["city"] = $getAllFreebies["city"];
            $response["getAllFreebies"]["state"] = $getAllFreebies["state"];
            $response["getAllFreebies"]["country"] = $getAllFreebies["country"];
            $response["getAllFreebies"]["zipcode"] = $getAllFreebies["zipcode"];
            $response["getAllFreebies"]["posted_on"] = $getAllFreebies["posted_on"];
            echo json_encode($response);
                        }else {
                            $response["error"] =1;
            $response["error_msg"] = "Error in getAllFreebies";
            echo json_encode($response);

                            }
                    }// end of getAllFreebies tag

以下は、MySQL データベースでクエリを実行する DB_function.php の getFreebies() 関数のコードです。

public function getFreebies(){
$result = mysql_query("SELECT * FROM freebie") or die(mysql_error());
return mysql_fetch_array($result);
}

以下はlogcatです:

05-30 00:13:23.960: E/JSON(318): {"tag":"getAllFreebies","success":1,"error":0,"getAllFreebies":{"username":"viking","catagory":"Art","subcatagory":"Potrait","title":"Potrait","item_condition":"Good","description":"potarit","address":"Blah St","city":"lalaland","state":"NA","country":"NA","zipcode":"blah","posted_on":"2012-05-27"}}
4

1 に答える 1

3

mysql_fetch_array() は、クエリ結果セットの単一行のみを配列として返します。すべての行をフェッチするわけではありません。結果ハンドル自体ではなく、getFreebies メソッドからフェッチの結果を返すため、呼び出し元のコードは、フェッチした 1 行以外のクエリから他の結果を取得することはできません。

そのため、次のものが必要です。

public function getFreebies() {
   $result = ...
   return($result);
}

$getAllFreebies = $db->getFreebies(...);
$data = array();
while($row = mysql_fetch_assoc($getAllFreebies)) {
   $data[] = array(
      .... your variable assignments here ...
   );
}
echo json_encod($data);
于 2012-05-29T21:25:23.560 に答える