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);
残念ながら、それは何もしない...それもありませんエラーメッセージまたはトーストメッセージを表示します。あなたはそれを修正する方法を知っていますか?
取得しているJSON応答を共有してください。 – jagapathi
を追加しました。変数名に少し間違いがありました(私は急いで名前を変更してより明確にしました)が、それは理由ではありません。 – Corgan
あなたのJSON解析が間違っています。 @Corgan – jagapathi