Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 发送字符串[]b httprequest并在php中获取b$\u get_Java_Php_Json_Httprequest - Fatal编程技术网

Java 发送字符串[]b httprequest并在php中获取b$\u get

Java 发送字符串[]b httprequest并在php中获取b$\u get,java,php,json,httprequest,Java,Php,Json,Httprequest,我想通过HTTP请求发送一个字符串[],并使用$\u get方法获取PHP中的值。 字符串[]中的值总数是可变的。 到目前为止,我已经尝试过: List<NameValuePair> params = new ArrayList<NameValuePair>(); String[] dropdowns = {"1st item","2nd item","3rd item","4th item"}; for (int i = 0; i < dropdowns.leng

我想通过HTTP请求发送一个
字符串[]
,并使用
$\u get
方法获取PHP中的值。
字符串[]
中的值总数是可变的。
到目前为止,我已经尝试过:

List<NameValuePair> params = new ArrayList<NameValuePair>();
String[] dropdowns = {"1st item","2nd item","3rd item","4th item"};
for (int i = 0; i < dropdowns.length; i++) {
params.add(new BasicNameValuePair("pid", dropdowns[i]));
}
然后像这样使用它们:

$result = mysql_query("SELECT *FROM Apps WHERE pid[0] = $pid" AND pid[1] = $pid" 
AND ...);
但我知道这种方式是错误的。
如何才能做到这一点?

除非您有一个输入数组,例如:

<input type='text' name='manyOfThese[]' />
然后是下一个脚本

$pid = $_SESSION['pid'];
unset($_SESSION['pid']);
 foreach($pid as $element){
    echo $element //or do whatever you need to do to that variable
}
在脚本的开头,您还需要包括: 会话_start()

然后当退出php应用程序时(例如,在注销时): 会话_destroy()

这个

$result = mysql_query("SELECT *FROM Apps WHERE pid[0] = $pid" AND pid[1] = $pid" AND ...); 
这是非常错误和不安全的。(列错误语法、SQL注入、错误引用、错误SQL语法等)

一定有点像

$result = mysql_query("
            SELECT * FROM Apps WHERE pid
            IN(" . implode(',', mysql_real_escape_string($pid)) . ")
          ");

您可以创建要在url中发送的值的序列化重新命名。它有一些限制,例如url的最大长度

'http://domain.com/data_handler.php?data=' . urlencode(serialize($array1));
取回您的阵列:

$array1 = unserialize($_GET['data']);
创建post请求并使用以下语法更好:

pid[]=1 
pid[]=2

这有两个部分,都涉及循环。首先,在发送数据时,将括号放在名称中以数组形式发送:

for (int i = 0; i < dropdowns.length; i++) {
    params.add(new BasicNameValuePair("pid[]", dropdowns[i]));
}

显然,您应该使用实际值做一些其他事情,以避免sql注入

如果在params.add中使用名称“pid[]”,可能会出现这种情况。但当发送httprequest时,您在PHP页面中看到了什么?尝试放置一个var_dump($_-GET)以查看。如何在php中使用var_-dump($_-GET)检索pid[I]编号?替换$pid=$_-GET['pid']。放置var_dump($_GET);。因此PHP dump var$\u GET将参数send与Java联合起来。但是您必须从Java到PHP页面进行httprequest,以查看send.OK是什么。那么,我如何在php中检索n个项目的pid[I]?php接收类似数组的'pid'参数?var_dump会看到这一点。你能更具体一点吗?如何检索p'p中n个项目的pid[I]?请参阅使用foreach循环进行加法
pid[]=1 
pid[]=2
for (int i = 0; i < dropdowns.length; i++) {
    params.add(new BasicNameValuePair("pid[]", dropdowns[i]));
}
$x = 0;
foreach($_GET['pid'] as $value) {
    $yourSQLString .= " AND pid[". $x ."] = '" . $value . "'";
    $x++;
}