Skip to content Skip to sidebar Skip to footer

Cannot Retrieve Data From Mysql Table Which Matches Specific "uid"

I am trying to learn more about MySQL and using Java (on Android) to access and retrieve information from a database on my WAMS server. The way my app is setup is that it has an in

Solution 1:

In your Android app, you expect a JSONArray:

// store incoming stream in an arrayJSONArray jArray = newJSONArray(streamToString(instream));

However, in your PHP file you only output multiple separate JSON objects instead of a real array. I think, you should collect all items from the database in an PHP array first and then encode and output it only once.

My PHP skills are a bit rusted, but I hope this one will work:

//store # of rows returned$num_rows = mysql_num_rows($query);

if ($num_rows >= 1) {
    $output = array();

    while($results = mysql_fetch_assoc($query)) {
        // append row to output$output[] = results
    }

    mysql_close();  // shouldn't that be outside the if block?//encode the returned data in JSON formatecho json_encode($output);
}

I would expect the output then to be like this (maybe without indentation):

[{"nid":"1","vid":"1","type":"goal","language":"","title":"test","uid":"1","status":"1","created":"1342894493","changed":"1342894493","comment":"2","promote":"1","moderate":"0","sticky":"1","tnid":"0","translate":"0"},{"nid":"2","vid":"2","type":"goal","language":"","title":"test2","uid":"1","status":"1","created":"1342894529","changed":"1342894529","comment":"2","promote":"1","moderate":"0","sticky":"1","tnid":"0","translate":"0"},{"nid":"5","vid":"5","type":"goal","language":"","title":"run","uid":"1","status":"1","created":"1343506987","changed":"1343506987","comment":"2","promote":"1","moderate":"0","sticky":"1","tnid":"0","translate":"0"},{"nid":"9","vid":"9","type":"goal","language":"","title":"run to the hills","uid":"1","status":"1","created":"1343604338","changed":"1343605100","comment":"2","promote":"0","moderate":"0","sticky":"0","tnid":"0","translate":"0"}]

Solution 2:

The problem lies in encoding and decoding of JSON. from your JSON response it looks like you are receiving JSON object from server also please try to validate you JSON response here. run your php file in browser, copy the entire response on the JSON validator and check the brackets that you are receiving the response in.

1. If your response starts with '[' it is and array and if it starts with '{' it is a JSON Object. while parsing JSON you have defined JSON array first but the server response is JSON object. While using JSON you have to be careful on server side for the format of response it will send and you have to be careful on the client side for the format of response you receive. I am posting example script for you.

-> Server side

if (mysql_num_rows($result)>0){
$response["data"] = array();        //this is an arraywhile($row= mysql_fetch_array($result))
{
$data = array();      //here I have created another temp array$data["name"] = $row["name"];         
$data["surname"] = $row["surname"];   

array_push($response["data"], $data);   //this makes an array of objects in the response
}}
}//endifelse{
echo"no input";
}}
mysql_close();
echo json_encode($response);    //and finally I echo it as an JSON object

As this php script will return me one object of array of objects ( bit complex isn't it!!) below is the format of response

-> validated JSON response

{"data":[{"name":"Setu","surname":"Desai",}]}

and to decode this my client site script need to be the following

-> parsing JSON object

JSONObject snObject = newJSONObject(jsonString);
    JSONArray snArray = snObject.getJSONArray("data");
    for (int i = 0; i < snArray.length(); i++) {
        JSONObject snObject2 = snArray.getJSONObject(i);
        String surname = snObject2.getString("surname");
        surnamearray.add(surname);
    }

the simple way to understand is to validate you JSON response and identify the position of JSON array and objects and then start decoding.

Post a Comment for "Cannot Retrieve Data From Mysql Table Which Matches Specific "uid""