2

我的 android 代码遇到问题。我正在尝试在 Android 中绘制图表。我想使用 PHP 脚本连接到 MySQL 库。我正在尝试向脚本发送一些参数,但它一直返回 null。PHP代码:

<?

mysql_connect(...);
mysql_select_db("temperature");

$Vreme = $_POST['Vreme'];
$Datum = $_POST['Datum'];

$q = mysql_query("SELECT * FROM temperature WHERE 
           ((datum > $Datum) || (datum = $Datum)) && (vreme > $Vreme) ");
while($e = mysql_fetch_assoc($q))
    $output[] = $e;

print(json_encode($output));

mysql_close();
?>

和安卓代码:

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Vreme",s1));
nameValuePairs.add(new BasicNameValuePair("Datum",s2));
InputStream is = null;
try {
    String adresa="http://senzori.open.telekom.rs/grafik.php";
    HttpPost httppost = new HttpPost(adresa);
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    HttpClient httpclient = new DefaultHttpClient();
    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());
}
4

2 回答 2

1

综合评论区:

1:更改为 mysqli 或 pdo(请参阅MySQLi 优于 MySQL 的优势

2:防止sql注入(见中途https://stackoverflow.com/tags/php/info

此外,在查看您的代码时,您不要在日期周围使用引号(如果不是数字,则使用 vreme)。尝试

"SELECT * FROM temperature WHERE (datum>='$Datum' && vreme>'$Vreme')"

如果它不起作用,请在常规浏览器中测试您的页面,以确保 PHP 部分正常工作。您也可以添加一些var_dump()来检查值。

于 2012-12-27T14:51:04.980 回答
0

您应该尝试单独调试各个部分。

  1. 尝试使用普通浏览器连接到您的 php 页面。如果它有效,您就知道错误在您的 java 代码中。如果它不起作用,您可以暂时不理会 java 代码并专注于使 php 页面正常工作。
  2. 硬编码 Datum 和 Vreme 的有效值,并查看 php 代码在将 POST 部分排除在等式之外时是否有效。
  3. 在 mysql 中尝试您的查询,看看它在放入 php 之前是否符合您的预期。
  4. 启用通用查询日志以查看 php 发送到 mysql 的内容。

这样,您将查明错误。

于 2012-12-27T14:50:23.487 回答