$ _POST未知数量的元素

时间:2014-01-13 19:18:22

标签: php html mysql post

我的想法就像一个网上商店的篮子。

我有一个填写到表单中的项目列表,如:

<?php while($info=msqli_fetch_array($query)){  ?>
    <Input type="text" id="someid1" value="<?php echo $info['info']; ?>"> 
    <Input type="Checkbox" id="checkid1" value="1">
    <Input type="Checkbox" id="checkid2" value="2">
<?php } ?>

我想使用POST进行提交。 在每一行的下一页上应该这样做:

MYSQLI查询

INSERT into booking (text,variable1,variable2) 
  VALUES ('$_POST['someid1']','$_POST['checkid1']','$_POST['checkid2']'; 

有解决方法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用括号设置命名输入,以将结果作为阵列服务器端获取。例如:

<input type="text" name="fruits[1]" value="apple" />
<input type="text" name="fruits[2]" value="orange" />

在服务器端:

<?php
print_r($_POST['fruits']);
?>

array(
  1 => 'apple',
  2 => 'orange',
)

这解决了这个问题。但是你的代码提出了一些应该真正解决的问题。

如果只是将$_POST变量转储到查询中,则需要SQL注入。使用PHP的PDO功能并参数化您的输入。请查看PHP PDO prepared statements答案中的第二个示例以获取更多信息。

答案 1 :(得分:0)

您可以使用foreach,但恕我直言并不是您想要做的事情。

答案 2 :(得分:-1)

您应该在html中使用数组,然后在$_POST数组中获得相应的数组。请注意,您需要name属性:

<input name="someid[<?php echo $info['id']; ?>]" id="someid1" value="<?php echo $info['info']; ?>">
<input name="checkid[<?php echo $info['id']; ?>]" id="checkid1" value="1">
// etc.

现在$_POST['someid']等将是你可以循环的数组。

请注意,您需要使用预准备语句将信息存储在数据库中。