HTTPPOST Android到服务器

时间:2012-03-17 00:30:25

标签: php android database http-post

我正在开发一个将数据发送到服务器的程序。服务器正在接收我的数据,但只接收它的最后一位。这是我的Android代码:

ArrayList<NameValuePair> j2 = new ArrayList<NameValuePair>();
j2.add("drink_name", "rootbeer")
j2.add("drink_name", "pepsi")

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("kubie.dyndns-home.com/R2Bar2/getingredients.php");
httppost.setEntity(new UrlEncodedFormEntity(j2));
HttpResponse response = httpclient.execute(httppost);
responseText = EntityUtils.toString(response.getEntity());

但它只是将最后一个条目(pepsi)添加到数据库中。 这是我的php:

 <?php 
$handle = mysql_connect('localhost','root','xxxx'); 
if($handle==false) 
{ 
die('No database connection'); 
} 

$result = mysql_query("TRUNCATE TABLE 'available_ingredients'");

$db=mysql_select_db('r2bar2'); 
$query='INSERT INTO available_ingredients (drink_name) VALUES ("'.$_POST["drink_name"].'")'; 
$result=mysql_query($query); 
?>

3 个答案:

答案 0 :(得分:3)

试试这个

j2.add(new BasicNameValuePair("drink_name[]", "rootbeer"));
j2.add(new BasicNameValuePair("drink_name[]", "pepsi"));

你在实体中放置的是一个NameValuePair列表 - 所以你添加的每一个都应该是一个NameValuePair,而BasicNameValuePair就是其中之一

在php中

<?php
foreach ($_POST["drink_name"] as $drink_name) {
    $query=...
    $result=...
}
?>

但要注意一点 - 确保在输入上调用mysql_real_escape_string以防止SQL注入攻击。

答案 1 :(得分:1)

尝试将参数名称更改为以下(来自Android代码):

j2.add(“drink_name []”,“rootbeer”); j2.add(“drink_name []”,“pepsi”);

在你的PHP中:

$ drink_names = array($ _ POST ['drink_name']);

希望这会有所帮助......

答案 2 :(得分:0)

您将相同的密钥设置两次,因此当服务器收到您的请求时,它只会看到drink_name的最后一个值,即“百事可乐”,因为它会覆盖“rootbeer”