需要使用 PHP 将 android app 生成的纬度和经度值存储到 mySQL 数据库中

Posted

技术标签:

【中文标题】需要使用 PHP 将 android app 生成的纬度和经度值存储到 mySQL 数据库中【英文标题】:Need to store the latitude and longitude values generated from android app into mySQL database using PHP 【发布时间】:2012-12-18 08:55:27 【问题描述】:

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

【问题讨论】:

您需要什么样的信息?如何将值从 android 传递到 PHP 或如何将它们存储在数据库中? 我需要将 lat 和 long 值从 android 存储到 mySQL 数据库中 【参考方案1】:

您可以使用以下代码将mLatmLong变量提交到服务器:

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

当然,您仍然需要注意错误处理(没有网络连接等)。

【讨论】:

感谢您的快速回复。我试过你的代码,但仍然无法在数据库中保存经纬度。 您的代码的 php 端是否正常工作? IE。你有一个 PHP 脚本,它从 GET-variables (?lat=&amp;long=) 中获取值并将其存储在数据库中? 谢谢!您是否在浏览器中测试过 PHP 代码(只需输入 http://yourdomain.com/yourscript.php?lat=3.45555&amp;lng=1.3344&amp;sender=x)以确保它可以独立于 Android 组件运行? 感谢您的支持!不,它在第 3 行和第 4 行给出错误,最后显示“OopsIncorrect decimal value: '' for column 'long' at row 1” 请看下面我的回答【参考方案2】:

好的,在我重写你的代码之前做几件事......

    您正在向 SQL 注入攻击敞开大门,因为您 没有使用准备好的语句。 不推荐使用 mysql PHP 接口,应该使用 mysqli 或 PDO 改为使用。 我假设您正在为坐标表上的主键传递 NULL。别 这样做,而是将其标记为 auto increment 并在 SQL。 坐标表的create table语句是什么?将SHOW CREATE TABLE coordinates 的结果粘贴到您的问题中。我怀疑你传递的值是nullprimary key 的列中,并且永远不能为空。

【讨论】:

仍然没有进展,我仍然无法在 db 中存储 lat 和 long 值 我仍然没有看到SHOW CREATE TABLE coordinates@CoolJCoolie 的输出

以上是关于需要使用 PHP 将 android app 生成的纬度和经度值存储到 mySQL 数据库中的主要内容,如果未能解决你的问题,请参考以下文章

Php用户登陆后的token一般怎么生成的?app端

hbuilder app打包流程(安卓的私有证书的生成)

Android系统签名

PHP接入支付宝支付

android studio怎么生成app

laravel\app\console\command怎么用