0

这是我的 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...

我希望这有帮助。

4

2 回答 2

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 执行任一选项,因为这是最简单的方法)并json_decode()在 PHP 中使用来提取内容。

4)几个可能合适的其他选项,具体取决于您在做什么。

于 2013-11-12T20:16:45.143 回答
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')";
于 2013-11-12T20:16:59.673 回答