PHP提取变量中的每个记录以进行插入

时间:2013-11-12 20:06:45

标签: php mysql sql variables insert

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

我希望这会有所帮助。

2 个答案:

答案 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')";