android app写的获取id 2的地名php给出了null

时间:2012-07-20 13:28:37

标签: php android

我正在尝试使用此代码,但它给出了null。它应该给我的地名。什么似乎是我的代码中的问题?我希望通过提供地点ID来获取地点详细信息。但我调试了,它总是返回null

代码

String result = "";
                InputStream is = null;
                // the year data to send
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("place_id", "2"));

                // http post
                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://example.com/getAllPeopleBornAfter.php");
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                } catch (Exception e) {
                    Log.e("log_tag", "Error in http connection " + e.toString());
                }
                // convert response to string
                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();

                    result = sb.toString();
                } catch (Exception e) {
                    Log.e("log_tag", "Error converting result " + e.toString());
                }

                // parse json data
                try {
                    JSONArray jArray = new JSONArray(result);
                    for (int i = 0; i < jArray.length(); i++) {
                        JSONObject json_data = jArray.getJSONObject(i);
                        TextView z = (TextView)findViewById(R.id.textView1);
                        z.setText(json_data.getString("place_id"));
                    }
                } catch (JSONException e) {
                    Log.e("log_tag", "Error parsing data " + e.toString());
                }
            }

        });

PHP

<?php
include "db_config.php";

$q=mysql_query("SELECT 'name' FROM places WHERE place_id='".$_REQUEST['place_id']."'");

while($e=mysql_fetch_assoc($q))
        $output[]=$e;

print(json_encode($output));

mysql_close();
?>

2 个答案:

答案 0 :(得分:0)

信息太少无法提供帮助。你确定你的PHP脚本返回任何东西吗? http响应的记录显示了什么?也许你的代码一切都很好,而null是你应该得到的问题潜伏在其他地方?

BTW:您的PHP代码非常糟糕。您可以使用SQL注入进行攻击,一般情况下,在尝试使用它应该返回的预期数据之前,应始终检查查询(或fopen或任何内容)是否成功,因为没有保证一切正常。错误检查的习惯对于可靠的软件开发至关重要。我也建议不要使用“?&gt;”如果它只是纯PHP脚本文件,不与HTML或任何东西混合(混合也很糟糕)。

答案 1 :(得分:0)

这是答案

ref.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                String result = "";
                InputStream is = null;

                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("place_id", "3"));

                try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(
                            "http://hopscriber.com/test.php");
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();

                } catch (Exception e) {
                    Log.e("log_tag", "Error in http connection " + e.toString());
                }
                // convert response to string
                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();
                    result = sb.toString();
                } catch (Exception e) {
                    Log.e("log_tag", "Error converting result " + e.toString());
                }

                // parse json data
                String version = null;
                try {
                    JSONArray jArray = new JSONArray(result);
                    for (int i = 0; i < jArray.length(); i++) {
                        JSONObject json_data = jArray.getJSONObject(i);
                        version = json_data.getString("name");
                        Toast.makeText(getBaseContext(), version,
                                Toast.LENGTH_LONG).show();
                        TextView x = (TextView) findViewById(R.id.textView1);
                        x.setText(version);
                    }
                } catch (JSONException e1) {
                    Toast.makeText(getBaseContext(), version, Toast.LENGTH_LONG)
                            .show();
                } catch (ParseException e1) {
                    e1.printStackTrace();
                }
            }

        });

PHP

<?php

include "db_config.php";

$query = mysql_query("SELECT * FROM places WHERE place_id='".mysql_real_escape_string($_POST[place_id])."'");

while($e=mysql_fetch_assoc($query))
    $output[]=$e;

print(json_encode($output));

mysql_close();
?>

thanx all for the help