需要使用 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】:您可以使用以下代码将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
当然,您仍然需要注意错误处理(没有网络连接等)。
【讨论】:
感谢您的快速回复。我试过你的代码,但仍然无法在数据库中保存经纬度。 您的代码的 php 端是否正常工作? IE。你有一个 PHP 脚本,它从GET
-variables (?lat=&long=
) 中获取值并将其存储在数据库中?
谢谢!您是否在浏览器中测试过 PHP 代码(只需输入 http://yourdomain.com/yourscript.php?lat=3.45555&lng=1.3344&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
的结果粘贴到您的问题中。我怀疑你传递的值是null
在 primary key
的列中,并且永远不能为空。
【讨论】:
仍然没有进展,我仍然无法在 db 中存储 lat 和 long 值 我仍然没有看到SHOW CREATE TABLE coordinates
@CoolJCoolie 的输出以上是关于需要使用 PHP 将 android app 生成的纬度和经度值存储到 mySQL 数据库中的主要内容,如果未能解决你的问题,请参考以下文章