我需要帮助将数据从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和很多行不是空但是空的。 您在代码中看到了问题吗?
答案 0 :(得分:0)
在阅读完您的评论后,您正在尝试做的事情(我认为)是持久数据。 php文件除了运行您拥有的代码外什么都不做。如果在请求中传递POST变量,则它们仅处于活动状态。该请求来自Android应用程序以及POST变量,对Android应用程序的响应将具有正确的输出。
来自浏览器的请求是“GET”,并且不发送pLat或pLng变量,因此没有要输出的变量。
这是您必须掌握的非常基本的HTTP概念。
您要做的是将数据保存在某处。 PHP可以通过将其保存到数据库(例如MySQL)或通过简单地将POST变量输出到本地文件来实现。快速谷歌搜索可以向您展示如何保存文件和打开数据库。哎呀,你甚至可以通过电子邮件发送给自己。
PHP脚本只会在脚本的生命周期中保存这些变量,然后永久地将它们从内存中释放出来。您可以使用PHP的强大功能将这些变量保存在其他位置。
答案 1 :(得分:0)
我一眼就能看到一些精神错乱。当呼叫来自Android设备时,为什么指定where username= { $_SESSION['username']}
?那会是什么时候?此外,如果此操作失败,则不插入用户名。但后来从不运行查询。
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
}
}
我建议您首先解决这两个非常关键的观察,然后用更具针对性的问题更新您的问题。然后我可以更新这个答案以使其更有用。