2012-03-17 7 views
2

Я работаю над программой, которая отправляет данные на сервер. Сервер получает мои данные, но только последний бит. Вот мой Android-код:HTTPPOST 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

'ArrayList ' Он называется Name -> Value pair not Name -> Value * s * pair. Одно имя, одно значение. – hakre

ответ

3

попробовать это

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

, что вы кладете в вашей организации является Список пар имя - так что каждая вещь, которую вы добавить должно быть пар имя и BasicNameValuePair является одним из тех

в PHP

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

но нота осторожности - убедитесь, что вы звоните mysql_real_escape_string на свои входы для защиты от атак с внедрением SQL.

+0

все еще печатает только pepsi –

+0

right, php хочет скобки в имени сделать массив - так что в вашем коде сервера, убедитесь, что вы зацикливаете элементы массива drink_name [] – dldnh

1

Попробуйте изменить название параметров ниже (от Android кода):

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

И в вашем PHP:

$ drink_names = массив ($ _ POST [ 'drink_name']);

Надеется, что это помогает ...

0

Вы можете установить один и тот же ключ дважды, поэтому, когда сервер получит ваш запрос, он видит только последнее значение для drink_name, который является «Пепси», потому что он переписывает «rootbeer»

+0

Как бы это изменить на моем PHP? –