如何插入多行数据,其中一些具有多维数组

时间:2019-01-14 15:46:21

标签: php mysql codeigniter

我正在尝试从select2字段插入多行数据。行中的某些字段可能有多个选择。我的代码仅处理一行数据和一个具有多个选择的字段,如下图所示。但是对于多行,插入无法按预期方式工作。请好人,我需要您的帮助。

public function save_staff()
{
$subjects = count($this->input->post('subject'));
   $names = count($this->input->post('names'));
  if($names > 0){
    for($i=0; $i < $names; $i++){

         for($p=0; $p < $subjects; $p++){

    $names_array = array(
        'names' => $this->input->post('names')[$i],
        'sign' => $this->input->post('sign')[$i],
        'subject' => $this->input->post('subject')[$p]

    );
    $this->db->insert($this->table, $names_array);

}
}

Screenshot of insertion form

上面的代码仅处理一行数据。并按照第二张图片所示对数据库中的数据进行标准化。Screenshot of inserted data。如果添加另一行数据且其中一个字段具有多个选择(如第一个选择),则我的代码无法处理它。如何调整代码以使其正确?第三张图片捕获了我的代码无法处理的屏幕截图。screenshot of scenario that my code can't handle

2 个答案:

答案 0 :(得分:0)

尝试在您的输入中执行此操作:

<select name="subject[][]" class="form-control selectpicker" multiple>

控制器:

$a1 = $this->input->post('subject');
$count1 = count($a1);

for ($i=0; $i < $count1 ; $i++) {

        $count2 = count($a1[$i]);

        if(!empty($count2)){
            for ($j=0; $j < $count2 ; $j++) {
                $names_array = array(
                    'subject' => $a1[$i][$j]

                );
            $this->db->insert($names_array);
            }
        }
    }

答案 1 :(得分:-1)

您的$ this-> db-> insert()函数看起来像什么?

您可能需要对其重新格式化以遵循以下要求:

INSERT INTO  table_name
(
    col_1,
    col_2,
    col_3
)
VALUES
(                    <--- first record being added
    'test',
    'someValue',
    2
),
(                   <--- second record being added
    'test_theSecond',
    'someValue',
    1234
);