PHP から Android に一連の結果を返そうとしています。
単一の結果を返すことができましたが、今は複数の結果を返そうとしています。これを配列として行う方法を理解するのに苦労しています。
PHP 関数:
public function searchForPeople($tower) {
$uuid = uniqid('', true);
$result = mysql_query("SELECT * FROM users WHERE tower='$tower'") or die(mysql_error());
$resultNo = mysql_num_rows($result);
// check for successful store
if ($result != null) {
//if just one result return it
if ($resultNo == 1) {
// return result
$resultSet[] = mysql_fetch_array($result);
return $resultSet;
//if more than one loop through
} else {
//add each row to an array
while($row = mysql_fetch_array($result)) {
$resultSet[] = $row;
}
return $resultSet;
}
} else {
return false;
}
}
Android からデータを POST する index.php のセクション:
//SEARCH FOR PEOPLE
else if ($tag == 'searchPeople') {
$tower = $_POST['tower'];
$result = $db->searchForPeople($tower);
// check array has been created
if ($result != false) {
$response["success"] = 1;
$count = 0;
foreach($result as $row) {
$response[$count]["user"]["name"] = $row["name"];
$response[$count]["user"]["email"] = $row["email"];
$count++;
}
echo json_encode($response);
} else {
$response["error"] = 2;
$response["error_msg"] = "No users found";
echo json_encode($response);
}
}
else {
echo "Invalid Request";
}
次に、以下のように Android で情報を取得しようとしていますが、PHP で json を返す方法に問題があることを意味する 0 の値がないというエラーが表示されます。
JSONObject results = new JSONObject(resultsString);
JSONObject json_row = results.getJSONObject("0");
JSONObject json_user = json_row.getJSONObject("user");
これは、SQL結果のPHP配列を返す際の問題だと確信しています。おそらく、それらをループして $resultSet または $response に追加するときです。
どんな助けでも大歓迎です。
編集:
ここに私が得ているエラーがあります:
11-14 19:42:37.270: E/JSON(639): "[{\"uid\":\"4\",\"unique_id\":\"505efc638e0f48.78430999\",\"name\":\"fish\",\"email\":\"fish\",\"encrypted_password\":\"r\/Hb7uXrHN8bFuRoKlG8+Y5LdKFjM2QyZDUyYzQ1\",\"salt\":\"c3d2d52c45\",\"created_at\":\"2012-09-23 13:11:15\",\"updated_at\":\"2012-11-03 09:56:15\",\"location\":\"888\",\"tower\":\"IS\",\"base_location\":\"\",\"client_site\":\"\",\"graduate\":\"0\",\"location_updated\":\"0000-00-00 00:00:00\"}]"
11-14 19:42:37.270: E/JSON Parser(639): Error parsing data org.json.JSONException: Value [{"uid":"4","unique_id":"505efc638e0f48.78430999","name":"fish","email":"fish","encrypted_password":"r/Hb7uXrHN8bFuRoKlG8+Y5LdKFjM2QyZDUyYzQ1","salt":"c3d2d52c45","created_at":"2012-09-23 13:11:15","updated_at":"2012-11-03 09:56:15","location":"888","tower":"IS","base_location":"","client_site":"","graduate":"0","location_updated":"0000-00-00 00:00:00"}] of type java.lang.String cannot be converted to JSONArray