这是我的PHP变量:
$container = $_POST['containerNumber'];
在$ _POST ['containerNumber']中,当用户从表单中选中复选框时,会检索多个容器编号。该代码无需显示。只要知道$ _POST ['containerNumber']可以分配多个容器编号。
我需要做的是从POST中提取每个容器编号,以便我可以为每个容器编号运行一个mysql INSERT语句。
在数据库表中,有多个列,其中container_num是我正在尝试更新的列(暂时)。
如何将$ container转换为数组并检索已分配给变量的每个容器编号?
我知道我需要利用FOREACH循环。话虽如此,很可能会有多个INSERT语句自动使用循环创建。
$SQL = "INSERT INTO myTable (container_num) VALUES ('$container')";
// times however many containers the variable $container had stored in it
请帮忙。
编辑**
一旦用户检查了许多复选框,我就可以显示每个容器:
<INPUT name="containerNumber" id="containerNumber" class="containerNumber" />
当我这样做时,它可以像这样显示在屏幕上:
CONT_ID001, CONT_ID002, CONT_ID003...
我希望这会有所帮助。
答案 0 :(得分:1)
有多种方法可以做到这一点。
1)给POST参数发送一个以[]结尾的名称,PHP在解析POST数据时自动将它们分配给一个数组。如果您从HTML表单发送数据,这是一个如何执行此操作的示例:
<form action="" method="POST">
<label>
First container number:
<input type="text" name="containerNumber[]" />
</label>
<label>
Second container number:
<input type="text" name="containerNumber[]" />
</label>
<input type="submit" />
在PHP中你可以做到
foreach($_POST["containerNumber"] as $container) {
...
}
(请注意,这是PHP的一个功能,不能移植到其他服务器端语言。这不是HTTP规范的一部分。)
2)使用某个分隔符分隔值,在PHP中使用explode()
来分割它。
3)将表单作为JSON发送或将一个字段编码为JSON(如果从HTML发送,我建议使用jquery执行任一选项,因为这是最简单的方法)并在PHP中使用json_decode()
来提取内容。
4)Sevaral可能适合的其他选项,具体取决于您正在做什么。
答案 1 :(得分:0)
如果我找到你,你有一个带有多个值的$ _POST变量。
如果$_POST['containerNumber']
的内容为CONT_ID001, CONT_ID002, CONT_ID003
你可以这样做:
$result = preg_split("/, /", $_POST['containerNumber']);
//the result dump will be:
//$result[0] = "CONT_ID001";
//$result[1] = "CONT_ID002";
//$result[2] = "CONT_ID003";
插入代码看起来应该(假设每个数字都有一列):
$SQL = "INSERT INTO myTable ";
$columns = "";
$values = "";
foreach (result as $id=>$out){
$columns .= "container_$id";
$values .= "'$out'";
if (count($result) < $id+1){
$columns .= ", ";
$values .= ", ";
}
}
$SQL .= "($columns) VALUES ($values)";
如果您只有container_num列,它应该如下所示:
$SQL = "INSERT INTO myTable (container_num) VALUES ('";
$columns = "";
$values = "";
foreach (result as $id=>$out){
$values .= $out;
if (count($result) < $id+1){
$values .= ", ";
}
}
$SQL .= "$values')";