2012-05-29 2 views
-1

여러 행의 JSON 데이터를 검색하여 표시하려고했지만 im은 모든 행을 검색하지 못했습니다. im은 데이터베이스 테이블의 맨 위 (첫 번째) 행만 가져 왔습니다. 검색된 JSON 데이터를 어떻게 넣을 수 있는지 혼란스러워합니다. 일종의 배열에 넣고 개별 행에 액세스합니까?여러 행의 JSON 데이터를 가져와 Array에 저장하는 방법은 무엇입니까?

이 문제와 관련된 코드를 제공합니다. 예. 나는이 질문을 게시하기 전에 충분한 연구를 해왔습니다. 실제로 한 가지 질문을 발견했습니다. 그 질문은 내 것과 비슷하지만 아무도 대답하지 않아서 제가이 게시물을 작성하고 있습니다.

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

가의 코드는 아래

내가 UserFunctions.java 클래스에서 getAllFreebies 함수를 호출하여 JSONdata를 검색하기 위해 노력하고있어 내 Freebies.java 클래스의 코드입니다 감사합니다 클래스 UserFunctions.java 아래

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

의 기능 getAllFreebies는() DB_Fu에서 어디 메신저 호출 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 

nction.php 파일 내 getFreebies의 코드() MySQL 데이터베이스에 쿼리를 수행 할 책임이 DB_function.php의 기능입니다. 단 배열로 쿼리 결과 집합의 단일 행을 리턴

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"}} 
+0

로 MYSQL_ASSOC는 오직 하나 개의 행을 반환합니다. mysql_fetch_assoc는 당신이 찾고있는 전체 (*) 결과 집합을 리턴한다. –

+1

@ misha'el : 아니요. fetch_assoc은 수치 적으로 키가 아닌 연관 배열과 마찬가지로 하나의 행을 반환합니다. –

+0

내 머리에 뇌가 미끄러 져있어. Marc B.가 제공 한 훌륭한 솔루션 –

답변

3

로 MYSQL_ASSOC() 이하

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

는 로그 캣이다. 모든 행을 가져 오지는 않습니다. 결과 핸들 자체가 아닌 getFreebies 메소드에서 가져온 결과를 리턴하므로 호출 코드가 가져온 한 행 이외의 다른 결과를 쿼리에서 가져올 수 없습니다.

따라서, 당신은해야합니다

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); 
+0

응답 주셔서 감사합니다.이 JSON 데이터의 마지막 행을 표시 working.Now 것 같습니다. pls 내 Java 함수 getAllFreebies 그냥 한 행 대신 얻은 데이터 배열을 읽는 것처럼 보일지 말해 줄 수 있습니다? 감사합니다. – Viking

+0

잘 모르겠다. 나는 자바를하지 않는다. 죄송합니다. –

+0

괜찮은 도움을 주셔서 감사합니다 :) – Viking

관련 문제