2016-09-05 1 views
0

JSON을 통해 내 안드로이드 응용 프로그램에 아래 나와있는 PHP 파일의 출력을 얻으려고하고 있지만 내 안드로이드 응용 프로그램의 첫 번째 항목 만 가져오고 있습니다. 뿐만 아니라 내가하지만 난 단지 첫번째 출력되지만 출력의 휴식을 얻을 수 있어요 수있는 다음 단계를 수행하면발리를 사용하여 mysql에서 JSON을 통해 여러 행을 얻는 방법

 private void getData() { 
    String id = editTextId.getText().toString().trim(); 
    if (id.equals("")) { 
     Toast.makeText(this, "Please enter an id",   Toast.LENGTH_LONG).show(); 
     return; 
    } 
    loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

    String url = Constants.DATA_URL+editTextId.getText().toString().trim(); 

    StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      loading.dismiss(); 
      showJSON(response); 
     } 
       }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(OrderHistory.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
       } 
      }); 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 

private void showJSON(String response){ 
    String name=""; 
    String address=""; 
    String vc = ""; 
    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray(Constants.JSON_ARRAY); 
     JSONObject collegeData = result.getJSONObject(0); 
     name = collegeData.getString(Constants.KEY_NAME); 
     address = collegeData.getString(Constants.KEY_ADDRESS); 
     vc = collegeData.getString(Constants.KEY_VC); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    textViewResult.setText("Name:\t"+name+"\nAddress:\t" +address+ "\nVice  Chancellor:\t"+ vc); 
    } 

답변

1

은 아주 간단뿐만 아니라 또한

<?php 
    define('HOST','XXXX'); 
    define('USER','XXXX'); 
    define('PASS','XXXX'); 
    define('DB','XXXX'); 
    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
    if($_SERVER['REQUEST_METHOD']=='GET'){ 
     $customerEmail = $_GET['customerEmail']; 
     $sql = "SELECT `amount`, `customerEmail`, `CCAvenueOrder_id` FROM `OrderAborted` WHERE customerEmail='".$customerEmail."'"; 
     $r = mysqli_query($con,$sql); 

     $result = array(); 
     while($res = mysqli_fetch_array($r)) 
     { 
      //$result = array(); 
      $result[] = array(
          "customerEmail"=>$res['customerEmail'], 
          "CCAvenueOrder_id"=>$res['CCAvenueOrder_id'], 
          "amount"=>$res['amount'] 
          ); 
      //echo json_encode(array("result"=>$result)); 
     } 

     echo json_encode(array("result"=>$result)); 
     mysqli_close($con); 
    } 
?> 

당신은 또한 간단하게 할 수있는 루프는 루프를 완료까지 데이터를 전송하고 루프 외부 배열 초기화를 이동 해달라고 결과 집합에서 대신 mysqli_fetch_array()

<?php 
    define('HOST','XXXX'); 
    define('USER','XXXX'); 
    define('PASS','XXXX'); 
    define('DB','XXXX'); 
    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
    if($_SERVER['REQUEST_METHOD']=='GET'){ 
     $customerEmail = $_GET['customerEmail']; 
     $sql = "SELECT `amount`, `customerEmail`, `CCAvenueOrder_id` FROM `OrderAborted` WHERE customerEmail='".$customerEmail."'"; 
     $r = mysqli_query($con,$sql); 

     $result = array(); 
     while($res = mysqli_fetch_assoc($r)) 
     { 
      $result[] = $res; 
      //echo json_encode(array("result"=>$result)); 
     } 

     echo json_encode(array("result"=>$result)); 
     mysqli_close($con); 
    } 
?> 

mysqli_fetch_assoc()을 사용하고 심지어 당신이 사용하는 경우 다시는 simpify 경우 mysqli_fetch_all()

<?php 
    define('HOST','XXXX'); 
    define('USER','XXXX'); 
    define('PASS','XXXX'); 
    define('DB','XXXX'); 
    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
    if($_SERVER['REQUEST_METHOD']=='GET'){ 
     $customerEmail = $_GET['customerEmail']; 
     $sql = "SELECT `amount`, `customerEmail`, `CCAvenueOrder_id` FROM `OrderAborted` WHERE customerEmail='".$customerEmail."'"; 
     $r = mysqli_query($con,$sql); 

     $result = mysqli_fetch_all($r, MYSQLI_ASSOC); 

     echo json_encode(array("result"=>$result)); 
    } 
?> 

그리고는 SQL 인젝션 벡터

<?php 
    define('HOST','XXXX'); 
    define('USER','XXXX'); 
    define('PASS','XXXX'); 
    define('DB','XXXX'); 
    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
    if($_SERVER['REQUEST_METHOD']=='GET'){ 
     //$customerEmail = $_GET['customerEmail']; 

     $sql = "SELECT `amount`, `customerEmail`, `CCAvenueOrder_id` 
       FROM `OrderAborted` 
       WHERE customerEmail=?"; 

     $stmt = mysqli_prepare($con,$sql); 

     $stmt = mysqli_stmt_bind_param ($stmt, 's', $_GET['customerEmail']); 

     $status = mysqli_execute($stmt); 

     $r = mysqli_stmt_get_result ($stmt); 

     $result = mysqli_fetch_all($r, MYSQLI_ASSOC); 

     echo json_encode(array("result"=>$result)); 
    } 
?> 
+0

감사 없애! (jsonlint.com을 통해 테스트 한) 유효한 JSON을 보내고 있지만 앱에서는 여전히 단일 출력 만 볼 수 있습니다. ( –

+0

그러면 'customerEmail =' ". $ customerEmail." ' "'이있는 행이 하나만 있습니다. – RiggsFolly

+0

DB에 81 행이 있음을 확인했습니다. –

0

는 동안의 $result = array(); 외부 정의를 내 응용 프로그램

<?php 
    define('HOST','XXXX'); 
    define('USER','XXXX'); 
    define('PASS','XXXX'); 
    define('DB','XXXX'); 
    $con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 
    if($_SERVER['REQUEST_METHOD']=='GET'){ 
     $customerEmail = $_GET['customerEmail']; 
     $sql = "SELECT `amount`, `customerEmail`, `CCAvenueOrder_id` FROM `     OrderAborted` WHERE customerEmail='".$customerEmail."'"; 
     $r = mysqli_query($con,$sql); 
     while($res = mysqli_fetch_array($r)) 
     { 
      $result = array(); 
      array_push($result,array(
          "customerEmail"=>$res['customerEmail'], 
          "CCAvenueOrder_id"=>$res['CCAvenueOrder_id'], 
          "amount"=>$res['amount'] 
          ) 
      ); 
      echo json_encode(array("result"=>$result)); 
     } 
     mysqli_close($con); 
    } 
?> 

JSON 코드에 표시되지 않습니다 고리. 정확하게 배열 수동으로 구축 점점로

관련 문제