0

我在android中制作了一个跟踪应用程序,它成功生成了纬度和经度

但我需要使用 PHP 将 lat 和 long 存储在我的外部 mySQL 数据库中。

我在 DB 中对 lat 和 long 使用值类型“decimal(10,7)”。

任何想法如何使用 PHP 将 android 生成的 lat 和 long 存储到我的外部 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. 坐标表的创建表语句是什么?将结果粘贴SHOW CREATE TABLE coordinates到您的问题中。我怀疑您null 在 a 列中传递了一个值,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 回答