0

緯度と経度を正常に生成する追跡アプリをAndroidで作成しました

しかし、PHP を使用して外部の mySQL データベースに緯度と経度を保存する必要があります。

DBで緯度と経度に値型「decimal(10,7)」を使用しています。

Android から生成された緯度と経度を、PHP を使用して外部の mySQL データベースに保存する方法はありますか?

私のPHPコード

<?php 
        $lat = $_GET['lat'];
        $lng = $_GET['lng'];
        $sender=$_POST['sender'];

 $hostname = 'localhost';
 $username = 'xxxx';
 $password = 'xxxxxxx';

   $conn =  mysql_connect($hostname,$username,$password) or die('Error Please Try Again.'); 

if ($conn) { 

    mysql_select_db("android track", $conn); 


   $query2 = "INSERT INTO coor VALUES(NULL,'$sender','$lat','$lng')"; 

    if (mysql_query($query2, $conn)) 
        echo "Data Insertion Successful"; 
    else 
        echo "Oops".  mysql_error() ; 

  } 

 mysql_close();   
 ?>
4

2 に答える 2

1

わかりました、コードを書き直す前にいくつかのことを...

  1. 準備済みステートメントを使用していないため、SQL インジェクション攻撃にさらされています。
  2. mysql PHP インターフェイスは非推奨であり、代わりに mysqli または PDO を使用する必要があります。
  3. 座標テーブルの主キーに NULL を渡していると仮定しています。そうしないでください。代わりに、としてマークしauto increment、SQL で列を明示的に指定してください。
  4. 座標テーブルの create table ステートメントは何ですか? の結果をSHOW CREATE TABLE coordinates質問に貼り付けます。であり、決してnullにならないnull 列に の値を渡しているのではないかと思います。primary key
于 2013-01-04T00:57:13.433 に答える
1

以下のコードを使用して、変数mLatと変数をサーバーに送信できます。mLong

String storeURL = "http://www.yourdomain.com/yourscript.php?lat=" + mLat + "&long=" + mLong;

URL getURL;
getURL = new URL(storeURL);

URLConnection connection = getURL.openConnection();
connection.connect();

InputStream input = new BufferedInputStream(getURL.openStream());
OutputStream output = new ByteArrayOutputStream();          
byte data[] = new byte[1024];

while ((count = input.read(data)) != -1) {
 output.write(data, 0, count);
}

output.flush();
output.close();
input.close();

String downloadResult = output.toString();
Log.i("LOG", downloadResult); //Your php-script can, for example, "echo("OK");" if the storing was successful

もちろん、エラー処理 (ネットワーク接続がないなど) に注意する必要があります。

于 2013-01-03T22:44:31.063 に答える