Php 如何插入多行,每行都有一个数组?

Php 如何插入多行,每行都有一个数组?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我需要插入多行数据。这些行中的每一行在第三列Class上都有一个数组。我想插入它,以便数据库中的数据看起来像下面的MYSQL屏幕截图所示。我遇到的错误是类列插入了重复的数据 var rowCount=1; 函数addMoreRows(frm){ 行计数++; var inputer='删除行'; $('.gra grp row')。追加(输入程序); } 函数removeRow(removeNum){ $('.rowCount'+removeNum.remove(); } 下面是我的模型 公共

我需要插入多行数据。这些行中的每一行在第三列Class上都有一个数组。我想插入它,以便数据库中的数据看起来像下面的MYSQL屏幕截图所示。我遇到的错误是类列插入了重复的数据


var rowCount=1;
函数addMoreRows(frm){
行计数++;
var inputer='删除行';
$('.gra grp row')。追加(输入程序);
}
函数removeRow(removeNum){
$('.rowCount'+removeNum.remove();
}
下面是我的模型
公共函数create_subject(){
$subject=$this->input->post('subject');
$highest_mark_acquivable=$this->input->post('highest_mark_acquivable');
$classes[]=内爆(',',$this->input->post('class');
对于($i=0;$i$subject[$i],
“可获得的最高分数”=>可获得的最高分数[$i],
“类”=>$classes[$p],
'username'=>$this->session->userdata('username')
);
$this->db->insert('subject',$new\u subject);
}
}
返回TRUE;
}
}
下面是我的控制器
公共函数create_subject(){
$this->output->enable_profiler(TRUE);
如果($this->input->is\u ajax\u request()&&&$this->input->post('ajax')==1){
$this->form_validation->set_规则('subject[],'subject',
“修剪|所需|最小长度[2]|最大长度[50]”;
$this->form_validation->set_rules('highest_mark_acquivable[]),'Maximum`在这里输入代码'marks acquivable','trim'必需的'数值');
$this->form_validation->set_规则('class[]','class','trim | required');
如果($this->form\u validation->run()==FALSE){
$this->output->set_status_header('400');
回显“”。验证_错误();
}否则{
如果($this->subject\u model->create\u subject()==true){
echo“干得好!已成功创建主题”;
}
}
}否则{
重定向(“错误/未找到”);
}
}     `
以下是表格
主题*
可获得的最高分数*
没有主题的课程*
$classes=$this->input->post('class');
对于($i=0;$i$subject[$i],
“可获得的最高分数”=>可获得的最高分数[$i],
'class'=>内爆(',',$classes[$i]),
'username'=>$this->session->userdata('username')
);
$this->db->insert('subject',$new\u subject);
}

我不确定您是否在使用Codeigniter 3,也不确定此功能是否是Codeginiter 3独有的

您可以使用查询生成器中的函数
$this->db->insert\u batch()

以下是进一步的解释:

您应该真正了解并特别了解(简而言之:在一列中不应该有多个条目,如果是这种情况,请将其拆分为两个表并使用关系)
$this->input->post('class')
是数组的数组吗?删除循环中的second for和内爆类注释不用于扩展讨论;这段对话已经结束。
<script>
var rowCount = 1;
function addMoreRows(frm){
rowCount ++;
var inputer = '<div class="row rowCount'+rowCount+'"><div class="col-md-3">    <div class="form-group"><input type="text" class="form-control" name="subject[]"></div></div><div class="col-md-3">    <div class="form-group"><input type="text" class="form-control" name="highest_mark_obtainable[]"></div></div><div class="col-md-3"><div class="form-group"><select class="form-control" name="class[]"><?php foreach($class_rows as $class_row){echo'<option value="'.$class_row['group'].'">'.$class_row['class'].'</option>';}?></select></div></div><div class="col-md-2"><button class="btn btn-danger" onclick="removeRow('+rowCount+')"><i class="fa fa-minus"></i> Remove row</button></div></div>';
    $('.gra-grp-row').append(inputer);
}
function removeRow(removeNum){
    $('.rowCount'+removeNum).remove();

}


</script>

Below is my model
public function create_subject(){
$subject = $this->input->post('subject');
$highest_mark_obtainable = $this->input->post('highest_mark_obtainable');
$classes[] = implode(',', $this->input->post('class'));

for($i = 0; $i < count($subject); $i++){
for($p = 0; $p < count($classes); $p++){
$new_subject = array(
'subject' => $subject[$i],
'highest_mark_obtainable' => $highest_mark_obtainable[$i],
'class' => $classes[$p],
'username' => $this->session->userdata('username')
);
$this->db->insert('subject', $new_subject);

}
}
return TRUE;
}
}


 Below is my controller

 public function create_subject(){
 $this->output->enable_profiler(TRUE);
 if($this->input->is_ajax_request() && $this->input->post('ajax') == 1){
 $this->form_validation->set_rules('subject[]', 'Subject',
 'trim|required|min_length[2]|max_length[50]');
$this->form_validation->set_rules('highest_mark_obtainable[]', 'Maximum          `enter code here`marks obtainable', 'trim|required|numeric');
     $this->form_validation->set_rules('class[]', 'Class', 'trim|required');
    if ($this->form_validation->run() == FALSE) {
        $this->output->set_status_header('400');
    echo '<span class="admin_validation_error" `enter code   here`style="color:#ff0000">'.validation_errors().'</span>';

    } else {

 if($this->subject_model->create_subject() == true){
 echo '<span class="validation_success" style="color:green; font-   weight:bolder">Well done! Subject(s) successfully created.</span>';
  }

        }

 }else{
    redirect('errors/not_found');
 }
 }     `

 BELOW IS THE FORM

 <div class="row">
 <div class="col-md-3">
 <div class="form-group">
 <label for="Subject">Subject<span class="asterix"> *</span></label>           
 <input type="text" class="form-control" name="subject[]" id=""    placeholder="Mathematics" value="">
 </div>

 </div><!--Subject-->
 <div class="col-md-4">
 <div class="form-group">
 <label for="Highest mark obtainable">Maximum marks obtainable<span 
   `class="asterix"> *</span></label>  
<input type="text" class="form-control" name="highest_mark_obtainable[]"   
  id="" placeholder="100" value="">
</div>
</div><!--Highest mark obtainable-->
<div class="col-md-3">
<div class="form-group">
<label for="Class">Classes that do subject<span class="asterix"> *</span> 
 </label>  <select class="form-control select2subjects" name="class[]"        `   `multiple="multiple" style="width:100%">
  <?php foreach ($class_rows as $class){
    echo '<option value="'.$class['class'].'">'.$class['class'].'</option>';
  }
  ?>
  </select>
  </div>
  </div><!--class associated with subject-->
  <div class="col-md-2">
 </div>
 </div> 
$classes = $this->input->post('class');

for($i = 0; $i < count($subject); $i++) {
    $new_subject = array(
    'subject' => $subject[$i],
    'highest_mark_obtainable' => $highest_mark_obtainable[$i],
    'class' => implode(',', $classes[$i]),
    'username' => $this->session->userdata('username')
    );
    $this->db->insert('subject', $new_subject);
}
$data = array(
    array(
            'title' => 'My title',
            'name' => 'My Name',
            'date' => 'My date'
    ),
    array(
            'title' => 'Another title',
            'name' => 'Another Name',
            'date' => 'Another date'
    )
);

$this->db->insert_batch('mytable', $data);
// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'),  ('Another title', 'Another name', 'Another date')