将数据从android发送到php

时间:2012-11-28 15:22:56

标签: java php android

我需要帮助将数据从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和很多行不是空但是空的。 您在代码中看到了问题吗?

2 个答案:

答案 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
   }
 }

我建议您首先解决这两个非常关键的观察,然后用更具针对性的问题更新您的问题。然后我可以更新这个答案以使其更有用。