我正在开发一个将数据发送到服务器的程序。服务器正在接收我的数据,但只接收它的最后一位。这是我的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);
?>
答案 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”