这是我的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...
我希望这有所帮助。
有多种方法可以做到这一点。
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其他可能合适的选择,具体取决于您正在做什么。
如果我得到你,你有一个_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')";