如何将数组中的数据发送到数据库

时间:2013-04-09 05:57:20

标签: php codeigniter

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

这是我的代码

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

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

}

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

}

任何人都可以帮我正确编写插入查询的代码

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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)");       
}

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