【问题标题】:My PHP is returning the wrong information?我的 PHP 返回了错误的信息?
【发布时间】:2012-04-04 20:50:51
【问题描述】:

试图让我的 PHP 脚本返回一些 SQL 表查询。这是我现在的脚本:

<?php

define("DB_HOST", "localhost");
define("DB_USER", "*");
define("DB_PASSWORD", "*");
define("DB_DATABASE", "*");

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_DATABASE);


if (isset($_POST['tag']) && $_POST['tag'] != '') {
    $tag = $_POST['tag'];
    echo $tag;
if ($tag == 'question') {
    $category = $_POST['category'];
    $response=mysql_query("select * from QUESTIONS where CATEGORY like '$category'");
    return $category; //just doing this, rather than $response to see if it works
}
}
?>

以下是与之相关的 Android 代码:

public JSONObject getQuestionsJSONFromUrl(String url, List<NameValuePair> params) {

    // Making HTTP request
try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        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) {
            Log.v("while", line);
            sb.append(line + "\n");
            //Log.v("err", line);
        }
        is.close();

以及调用getQuestionsJSON的方法...:

private static String question_tag = "question";
public JSONObject getQuestions(String category) {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new BasicNameValuePair("tag", question_tag));
    params.add(new BasicNameValuePair("category", category));
    //JSONObject json;
    JSONObject questionsList = jsonParser.getQuestionsJSONFromUrl(questionURL, params);
    //return json
    return null;
}

这是我在 getQuestionsJSON...() 方法中的 Log.v() 的 LogCat:

04-04 20:41:58.721: V/while(933): question

所以我真的不明白为什么这会返回“问题”而不是我运行 getQuestions() 时传递的字符串?

【问题讨论】:

  • 回声 $tag;返回您的“问题”

标签: php android sql


【解决方案1】:

在 PHP 文件中你有

echo $tag;

这是对请求的响应。

这应该返回 mysql 响应:

if (isset($_POST['tag']) && $_POST['tag'] != '') {
    $tag = $_POST['tag'];
    if ($tag == 'question') {
        $category = $_POST['category'];
        $response=mysql_query("select * from QUESTIONS where CATEGORY like '$category'");

        $rows = array();
        while($r = mysql_fetch_assoc($response)) {
            $rows[] = $r;
        }
        print json_encode($rows);
    }
}

【讨论】:

  • 这有帮助,但并没有解决问题。现在日志返回; 04-04 21:11:32.791: V/while(1188): 资源 ID #2。以下是一个简单查询的输出结果: {"category":"elections","id":"0","title":"你将在 11 月的总统选举中投票给谁?","published":" 2012-04-02","enddate":"2012-04-30","re​​sponsetype":"0"}{"category":"elections","id":"2","title":"问题标题,女士们和先生们","published":"2012-04-02","enddate":"2012-04-30","re​​sponsetype":"1"}
  • 谢谢雅罗斯劳!这将被标记为正确,我将很快发布另一篇文章。如果您愿意提供更多帮助,我相信您会获得另一个正确的响应代表增益 :) 发布时我会在此处链接。
  • 我也很高兴 Jaroslaw,这是新帖子:stackoverflow.com/questions/10019599/…
猜你喜欢
  • 1970-01-01
  • 2016-10-29
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-05
相关资源
最近更新 更多