【发布时间】:2017-10-04 13:13:56
【问题描述】:
我正在使用 Volley 编写一个简单的 Android 应用程序。我想知道如何通过 ID 从 MySQL 数据库中选择名字和姓氏,哪个用户在应用程序中输入了 editText。这是我的 PHP 脚本:
<?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 格式的数据,所以脚本和数据库都可以。我得到 $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);
不幸的是,它没有做任何事情......它甚至没有显示任何错误或 toast 消息。你知道怎么解决吗?
【问题讨论】:
-
请分享您收到的 JSON 响应。
-
我添加了。变量名有一点点错误(为了更清楚,我匆忙更改了名称),但这不是原因。
-
您的 JSON 解析错误。 @Corgan
-
嗯,你能告诉我到底出了什么问题吗?我按照我在其中一个 YT 教程中看到的相同方式完成了它,并且它工作正常。
-
检查我的答案
标签: java php android mysql android-volley