2017-05-06 5 views
4

Volleyを使用して簡単なAndroidアプリケーションを作成しています。私はIDでのMySQLデータベースから名と姓を選択する方法を知りたいと思います。ユーザーはのeditTextに入力してください。これは私のPHPスクリプトです:Android Volley:ユーザーが指定したIDでMySQLデータベースからデータを選択

<?php 
    include 'connection.php'; 

    global $connect; 
    $id = $_POST["id"]; 

    $query = "SELECT firstName, lastName FROM users WHERE id = '$id'"; 

    $result = mysqli_query($connect, $query); 
    $number_of_rows = mysqli_num_rows($result); 

    $response = array(); 

    if($number_of_rows > 0) { 
     while($row = mysqli_fetch_assoc($result)) { 
      $response[] = $row; 
     } 
    } 

    header('Content-Type: application/json'); 
    echo json_encode(array("users"=>$response)); 
    mysqli_close($connect); 

?> 

私はコードでIDを指定した場合、それは私が求めている、JSONデータを返すので、スクリプトおよびデータベースはOKです。私は$のID = 1のために得る応答は次のとおりです。

{"users":[{"firstName":"Jonash","lastName":"Corvin"}]} 

そして、これはStringRequestの私のコードです:

StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 
     try { 
      JSONArray jsonArray = new JSONArray(response); 
      JSONObject jsonObject = jsonArray.getJSONObject(0); 

      String firstName = jsonObject.getString("firstName"); 
      String lastName = jsonObject.getString("lastName"); 

      firstNameTV.setText(firstName); 
      lastNameTV.setText(lastName); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
}, new Response.ErrorListener() { 
    @Override 
    public void onErrorResponse(VolleyError error) { 
     Toast.makeText(MainActivity.this, "Something went wrong",Toast.LENGTH_LONG).show(); 
     error.printStackTrace(); 
    } 
}) { 
    @Override 
    protected Map<String, String> getParams() throws AuthFailureError { 
     Map<String,String> parameters = new HashMap<String, String>(); 
     parameters.put("id", idEditText.getText().toString()); 
     return parameters; 
    } 
    }; 
queue.add(stringRequest); 

残念ながら、それは何もしない...それもありませんエラーメッセージまたはトーストメッセージを表示します。あなたはそれを修正する方法を知っていますか?

+0

取得しているJSON応答を共有してください。 – jagapathi

+0

を追加しました。変数名に少し間違いがありました(私は急いで名前を変更してより明確にしました)が、それは理由ではありません。 – Corgan

+0

あなたのJSON解析が間違っています。 @Corgan – jagapathi

答えて

4

{ "ユーザ":[{ "firstNameの": "Jonash"、 "lastNameの": "コルビン"}]}

は、与えられたJSONによれば次のようなJSONを解析する必要があります:

JSONObject jsonobject = new JSONObject(response); 
JSONArray jsonarray = jsonobject.getJSONArray("users"); 
JSONObject data = jsonArray.getJSONObject(0); 

String firstName = data.getString("firstName"); 
String lastName = data.getString("lastName"); 
+0

Yeeaah、今それは動作します!ありがとうございました! :)) – Corgan

関連する問題