2017-05-06 2 views
4

Ich schreibe eine einfache Android-Anwendung mit Volley. Ich möchte wissen, wie man einen Vornamen und einen Nachnamen von der MySQL Datenbank durch Identifikation, auswählt, die Benutzer in editText in Anwendung eintragen. Das ist mein PHP-Skript:Android Volley: Wählen Sie Daten aus der MySQL-Datenbank nach ID vom Benutzer

<?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); 

?> 

Wenn ich die ID im Code angegeben, eine Daten in JSON zurückgibt, was ich verlange, so das Skript und die Datenbank sind ok. Die Antwort, die ich für $ id bekommen = 1:

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

Und dies ist mein Code von 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); 

Leider hat es nichts tun ... Es tut auch nicht zeige irgendeinen Fehler oder eine Toast-Nachricht an. Weißt du, wie man es repariert?

+0

Bitte teilen Sie Ihre JSON Antwort, die Sie bekommen. – jagapathi

+0

Ich habe hinzugefügt. Es gab einen kleinen Fehler im Variablennamen (ich habe die Namen in Eile für mehr Klarheit geändert), aber es ist kein Grund. – Corgan

+0

Ihr JSON Parsing ist falsch. @Corgan – jagapathi

Antwort

4

{ "Benutzer": [{ "firstname": "Jonash", "lastname": "Corvin"}]}

Nach dem gegebenen JSON müssen Sie die JSON wie diese analysieren :

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, jetzt funktioniert es! Vielen Dank! :)) – Corgan

Verwandte Themen