-1

androidからphpにデータを送信するのを手伝う必要があります。私はAndroid用のこのJavaコードを持っています。

public void sendToDb()
{
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("pLat",Double.toString(lat)));
    nameValuePairs.add(new BasicNameValuePair("pLng",Double.toString(lng)));

    try{
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new      
                HttpPost("http://123456.com/welcome.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        Log.i("postData", response.getStatusLine().toString());
    }

    catch(Exception e)
    {
        Log.e("log_tag", "Error in http connection "+e.toString());
    }           
}

そして、私は自分のphpフォルダーにこのコードを持っています。

<?php
 $pLat = $_POST['pLat'];
 $pLng = $_POST['pLng'];

 $result = mysql_query("update Users set lat='$pLat',lon='$pLng' where username='ozi');      
 if (mysql_affected_rows()==0) 
   {
    $query = "INSERT INTO Users ";
    $query .= "(lat,lon) VALUES ('$pLat','$pLng')";
   }
 }
?>

携帯電話からデータを送信する場合、問題はありませんが、mysql latとロット行を確認すると、nullではなく空になります。コードに見られる問題はありますか?

4

2 に答える 2

0

コメントを読んだ後、あなたがやろうとしていることは(私が思うに)データを永続化することです。phpファイルはあなたが持っているコードを実行するだけです。POST変数は、リクエストで渡した場合にのみ有効になります。リクエストはPOST変数とともにAndroidアプリから送信され、Androidアプリへの応答は正しい出力になります。

ブラウザからのリクエストは「GET」であり、pLatまたはpLng変数を送信しないため、出力する変数はありません。

これは、理解しなければならないHTTPの非常に基本的な概念です。

あなたがしようとしているのは、データをどこかに保存することです。PHPは、データベース(MySQLなど)に保存するか、POST変数をローカルファイルに出力するだけでこれを実行できます。クイックグーグル検索は、ファイルを保存し、データベースを開く方法を示すことができます。ええと、あなたはそれらをあなた自身に電子メールで送ることさえできます。

PHPスクリプトは、スクリプトの存続期間中のみこれらの変数を保持し、その後、それらをメモリから永久に解放します。PHPの能力を使用して、これらの変数を別の場所に保存するのはあなた次第です。

于 2012-11-28T16:40:23.757 に答える
0

一目で私はすでにここでいくつかの狂気を見ることができます。where username= { $_SESSION['username']}通話がAndroidデバイスから発信されるタイミングを指定するのはなぜですか?どんなセッションがありますか?さらに、これが失敗した場合は、ユーザー名なしで挿入します。ただし、クエリを実行しないでください。

 if (mysql_affected_rows()==0) 
   {
    $query = "INSERT INTO Users ";
    $query .= "(username, lat,lon) VALUES ('ozi', '$pLat','$pLng')";
    mysql_query($query) or die(mysql_error()); // <---- this would need to be run
   }
 }

最初にこれら2つの非常に重要な観察結果を修正してから、より的を絞った問題で質問を更新することをお勧めします。それから私はこの答えをもっと役立つように更新するかもしれません。

于 2012-11-28T21:19:47.410 に答える