我需要插入所有变量发送后,他们是复选框,每个代表一个用户。如果我使用GET,我会得到如下的结果:
?19=on&25=on&30=on
我需要在数据库中插入变量。我怎样用POST发送所有的变量?作为一个数组或者用逗号分隔的值或者其他什么?
idv4meu81#
变量$_POST将自动填充。尝试var_dump($_POST);查看内容。您可以按如下方式访问各个值:echo $_POST["name"];当然,这是假设您的表单使用典型的表单编码(即enctype=”multipart/form-data”如果您的帖子数据是其他格式(例如JSON或XML),您可以执行以下操作:
$_POST
var_dump($_POST);
echo $_POST["name"];
enctype=”multipart/form-data”
$post = file_get_contents('php://input');
而$post将包含原始数据。假设您使用的是标准的$_POST变量,您可以测试是否选中了一个复选框,如下所示:
$post
if(isset($_POST['myCheckbox']) && $_POST['myCheckbox'] == 'Yes') { ... }
如果您有一组复选框(例如
<form action="myscript.php" method="post"> <input type="checkbox" name="myCheckbox[]" value="A" />val1<br /> <input type="checkbox" name="myCheckbox[]" value="B" />val2<br /> <input type="checkbox" name="myCheckbox[]" value="C" />val3<br /> <input type="checkbox" name="myCheckbox[]" value="D" />val4<br /> <input type="checkbox" name="myCheckbox[]" value="E" />val5 <input type="submit" name="Submit" value="Submit" /> </form>
在复选框名称中使用[ ]表示PHP脚本将以数组的形式访问所选值。在这种情况下,$_POST['myCheckbox']不会返回单个字符串,但会返回一个数组,该数组包含所有选中的复选框的值。例如,如果我选中所有复选框,$_POST['myCheckbox']将是一个包含以下内容的数组:{A, B, C, D, E}。下面是一个如何检索值数组并显示它们的示例:
[ ]
$_POST['myCheckbox']
{A, B, C, D, E}
$myboxes = $_POST['myCheckbox']; if(empty($myboxes)) { echo("You didn't select any boxes."); } else { $i = count($myboxes); echo("You selected $i box(es): <br>"); for($j = 0; $j < $i; $j++) { echo $myboxes[$j] . "<br>"; } }
exdqitrt2#
您应该能够从$_POST变量访问它们:
foreach ($_POST as $param_name => $param_val) { echo "Param: $param_name; Value: $param_val<br />\n"; }
vawmfj5a3#
它已经过时了,不希望直接访问超级全局变量(我想是从php 5.5开始的吧?)每个现代IDE都会告诉您:不要直接访问超全局变量。使用一些过滤函数(例如filter_input)对于我们的解决方案,要获取所有请求参数,必须使用方法filter_input_array要从输入法获取所有参数,请使用以下命令:
filter_input
filter_input_array
$myGetArgs = filter_input_array(INPUT_GET); $myPostArgs = filter_input_array(INPUT_POST); $myServerArgs = filter_input_array(INPUT_SERVER); $myCookieArgs = filter_input_array(INPUT_COOKIE); ...
现在您可以在var_dump或您的foreach-Loops中使用它不起作用的是用这个方法访问$_REQUEST超全局。它总是返回NULL,这是正确的。如果你需要获取所有的输入参数,通过不同的方法,只需像下面的方法一样合并它们:
var_dump
foreach
NULL
function askForPostAndGetParams(){ return array_merge ( filter_input_array(INPUT_POST), filter_input_array(INPUT_GET) ); }
Edit:此方法的扩展版本(在未设置请求方法之一时也有效):
function askForRequestedArguments(){ $getArray = ($tmp = filter_input_array(INPUT_GET)) ? $tmp : Array(); $postArray = ($tmp = filter_input_array(INPUT_POST)) ? $tmp : Array(); $allRequests = array_merge($getArray, $postArray); return $allRequests; }
bvjxkvbb4#
那么,类似于$_POST数组的东西呢?你可以用http_build_query($_POST)把它们重新放到一个var=xxx&var2=yyy字符串中,或者直接用print_r($_POST)来看看里面有什么。
http_build_query($_POST)
var=xxx&var2=yyy
print_r($_POST)
k5hmc34c5#
为什么不这样呢,很简单:
extract($_POST);
n7taea2i6#
使用此u可以获取所有post变量
6条答案
按热度按时间idv4meu81#
变量
$_POST
将自动填充。尝试
var_dump($_POST);
查看内容。您可以按如下方式访问各个值:
echo $_POST["name"];
当然,这是假设您的表单使用典型的表单编码(即
enctype=”multipart/form-data”
如果您的帖子数据是其他格式(例如JSON或XML),您可以执行以下操作:
而
$post
将包含原始数据。假设您使用的是标准的
$_POST
变量,您可以测试是否选中了一个复选框,如下所示:如果您有一组复选框(例如
在复选框名称中使用
[ ]
表示PHP脚本将以数组的形式访问所选值。在这种情况下,$_POST['myCheckbox']
不会返回单个字符串,但会返回一个数组,该数组包含所有选中的复选框的值。例如,如果我选中所有复选框,
$_POST['myCheckbox']
将是一个包含以下内容的数组:{A, B, C, D, E}
。下面是一个如何检索值数组并显示它们的示例:exdqitrt2#
您应该能够从
$_POST
变量访问它们:vawmfj5a3#
它已经过时了,不希望直接访问超级全局变量(我想是从php 5.5开始的吧?)
每个现代IDE都会告诉您:
不要直接访问超全局变量。使用一些过滤函数(例如
filter_input
)对于我们的解决方案,要获取所有请求参数,必须使用方法
filter_input_array
要从输入法获取所有参数,请使用以下命令:
现在您可以在
var_dump
或您的foreach
-Loops中使用它不起作用的是用这个方法访问$_REQUEST超全局。它总是返回
NULL
,这是正确的。如果你需要获取所有的输入参数,通过不同的方法,只需像下面的方法一样合并它们:
Edit:此方法的扩展版本(在未设置请求方法之一时也有效):
bvjxkvbb4#
那么,类似于
$_POST
数组的东西呢?你可以用
http_build_query($_POST)
把它们重新放到一个var=xxx&var2=yyy
字符串中,或者直接用print_r($_POST)
来看看里面有什么。k5hmc34c5#
为什么不这样呢,很简单:
n7taea2i6#
使用此u可以获取所有post变量