Java 通过编辑文本选择获取选择查询

Java 通过编辑文本选择获取选择查询,java,php,android,json,mysqli,Java,Php,Android,Json,Mysqli,嗨,当有人在edittext中输入id时,我想从服务器获取数据,如果有,匹配的数据应该显示在TextView中 我用一个静态id工作,所以假设我从id='1'的表中选择了1号,如果在编辑文本中输入了1号,1号的数据就会显示出来 null通常显示在我的浏览器中 但是现在我使用了$id=_REQUEST['id']jsonparser只返回NPE(NullPointerException),因为jsonparser显示了一个错误:错误解析数据org.json.jsoneException:java.

嗨,当有人在edittext中输入id时,我想从服务器获取数据,如果有,匹配的数据应该显示在TextView中

我用一个静态id工作,所以假设我从id='1'的表中选择了1号,如果在编辑文本中输入了1号,1号的数据就会显示出来

null
通常显示在我的浏览器中

但是现在我使用了
$id=_REQUEST['id']
jsonparser只返回NPE(NullPointerException),因为jsonparser显示了一个错误:
错误解析数据org.json.jsoneException:java.lang.String类型的值nulln无法转换为JSONObject
我假设查询没有被触发

我将向您展示我的JSON解析器类,以及我的php的一部分

 <?php
$mysqli = new mysqli("host", "user", "password", "database"); 
if (mysqli_connect_errno()) {
 printf("Connect failed: %s\n", mysqli_connect_error());
 exit();
}
$id=$_REQUEST['id'];
$result = $mysqli->query("Select * From Table where id = '$id'");
while($row = mysqli_fetch_assoc($result)) { 
 $rows=$row;
} 
echo json_encode($rows);
$result->close();
$mysqli->close();?>

首先,您的代码中有SQL注入漏洞。未经验证,您不能在sql查询中使用任何变量!尝试使用PDO

其次,您似乎没有将ID的正确值从Java传递到PHP,您正在搜索ID为“”的行


第三,$rows=$row将不起作用。添加$rows=array();在while之前,然后使用$rows[]=$row

我不明白第二部分,你说的不正确的转移值是什么意思?由于要搜索的id的内容依赖于edittext值,因此我认为应该将其保留为空;所以,在我看来,传递给PHP的ID值是空的。您测试了应用程序的这一部分吗?我改为edittext字符串,edit=edt.getText().toString();但是te传输是什么意思,因为我不太确定如何在java中传递变量$id
public class JSONParser {
    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";
String id;
    private static final String TAG_ID = "id";

// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("id", ""));
        httpPost.setEntity(new UrlEncodedFormEntity(params));

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    // return JSON String
    return jObj;
}