0

我从数组中的输入框中获取一个值。我想使用单个插入查询将所有这些发布到数据库中,以便将所有相关数据一起插入 MySQL

这是我的代码

foreach ($_POST['stop'] as $stopIndex => $stopValue) {
    echo $stopname=$stopValue;
}

foreach ($_POST['timing'] as $timingIndex => $timingValue) {

}

foreach ($_POST['ampm'] as $ampmIndex => $ampmValue) {

}

谁能帮我正确的代码在哪里写插入查询

4

2 回答 2

0

如果您使用 codeigniter 获取数据的方式,这是一个示例。

只需准备一个带有适当键的数组(与您定义的数据库键相关)并使用 update_batch CI db 方法将其导入。

这实际上是您可以在模型中使用的方法。

function save_something() {
    $post_data = $this->input->post();

    foreach ($post_data as $key => $value) {
            $settings[] =  array( 'key' => $key, 'value' => $value);
        }
    }

    $this->db->update_batch('settings',$settings,'key');
    return true;
}
于 2013-04-09T06:03:24.620 回答
0

是的,当然。

假设你有类似下面的东西。

<input type="text" name="variable1['key1']">
<input type="text" name="variable1['key2']">

variable1是一个数组。提交时,不要使用“for”或“foreach”直接将其序列化为:

$s = serialize($_POST['variable1']);
echo $s;

$s会是这样的:

"a:2:{s:6:"'key1'";s:6:"value1";s:5:"'bcd'";s:6:"value2";}"

$s可以存储在数据库中的单个列中(类型可以是 DB 中的文本)。

在检索时,您可以反序列化转换回数组的列,您可以轻松使用它。

优点,数据库中的记录数量较少,并且在您的前端您无需使用循环语句。

更新 - 添加到数据库:

foreach ($_POST as $key)
{
  $s = serialize($key);
  mysqli_query("INSERT INTO `test`.`abc` (`id` ,`data`) VALUES (NULL , $s)");       
}

序列化值充当字符串,因此结果将是记录数 == 数组数。

于 2013-04-09T08:45:24.133 回答