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();
?>

Android コード:

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

コメントの組み合わせ awnser:

1: mysqli または pdo に変更します (「MySQL に対する MySQLi の利点」を参照) 。

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 の有効な値をハード コードし、式から POST 部分を除外したときに php コードが機能するかどうかを確認します。
  3. php に入力する前に、mysql でクエリを試して、期待どおりに動作することを確認してください。
  4. 一般的なクエリ ログを有効にして、php が mysql に送信する内容を確認します。

このようにして、エラーを特定します。

于 2012-12-27T14:50:23.487 に答える