0

我想使用名称值对将String (itemname)数组传递给 php 文件(PlaceOrder.php) 。当我单击PlaceOrder 时,它会在数据库中button传递空值。Android代码或Php代码有什么问题吗?我的 Android 代码如下

public void onClick(View v) {
        // TODO Auto-generated method stub
        try
        {

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://10.0.2.2/demo/PlaceOrder.php");
              Log.e("log_tag", "connection success ");
              List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            for (int i=0;i<1;i++)
            {
                nameValuePairs.add(new BasicNameValuePair("ItemName[]", String.valueOf

(resultArrItemname[i])));

            }
            Log.e("log_tag", "Name value pair success ");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            Log.e("log_tag", "response sucess ");
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
             showDialog("Order Placed Successfully");

        }

        catch(Exception e)
        {
            Log.e("log_tag", "Error in http connection"+e.toString());
        }
    }

我的 PHP 代码如下

<?php

        $itemname[]=$_REQUEST['ItemName[]'];   

        mysql_connect("localhost","root","aaaaaa") or die(mysql_error());
        mysql_select_db("demo") or die(mysql_error());          

        foreach($itemname as $key)
        {
            $sql=mysql_query("Insert into tblorder(itemname) values('$key')");
            while($row=mysql_fetch_array($sql)) 
        $output[]=$row;
             print(json_encode($output));
        }
         mysql_close();
?>
4

3 回答 3

1

尝试改变

$itemname[]=$_REQUEST['ItemName[]']; 

$itemname[]=$_REQUEST['ItemName']; 
于 2013-02-19T06:49:04.457 回答
0

改变$itemname[]=$_REQUEST['ItemName[]'];

$itemname=$_REQUEST['ItemName']; 

[]从两侧取下

使用如下查询:

$sql=mysql_query("Insert into tblorder(itemname) values('".mysql_real_escape_string($key)."')");

mysql_* 函数已弃用,请使用 mysqli_* 和 PDO

改变 :

while($row=mysql_fetch_array($sql)) 
$output[]=$row;

至 :

while($row=mysql_fetch_array($sql)) {
   $output[]=$row;
}

$output = array();在 foreach 循环上方声明

我想你需要print(json_encode($output));在 foreach 循环之后

于 2013-02-19T06:52:48.913 回答
0

$itemname[]=$_REQUEST['ItemName[]'];

这不是更好的使用方式..尝试 POST 或 PUT 或其他输入类型...请求可能对未来的开发有害...

试试 ---- $itemname[]=$_POST['ItemName'];

于 2013-02-19T06:58:16.593 回答