在数据库codeigniter中插入多个值?

时间:2015-04-24 08:13:21

标签: php mysql codeigniter activerecord

如果使用多个复选框选中行,我想在一次单击中在数据库中插入多行 enter image description here

这是我的代码=> 1)控制器:guard.php (这里我拿出一系列学生ID列表并将它们一个接一个地传递给另一个函数get_leave_data,该函数获取学生的id并从另一个表leave_application返回有关该学生的更多信息。) / p>

public function students_out(){
    $request=$this->input->post('approve_leave_status');
    if($request=="OUT"){
    $check_list_out[]=$_POST['check_list_out'];
    if(!empty($check_list_out)){
          foreach ($check_list_out as $check_list_id) {
            $student_data=$this->get_leave_data($check_list_id);
            $this->insert_student_outside($student_data);
          }
          $this->load->helper('url');
          $this->load->view('view_guard');
    }
}else{
     $this->load->helper('url');
     $this->load->view('view_guard');
}

} `

 public function get_leave_data($id){
 $this->load->model('model_guard');
 $data=$this->model_guard->get_data($id);
 return $data;
}

public function insert_student_outside($std_data){
  $this->load->model('model_guard');
  $data=$this->model_guard->insert_student_out($std_data);
 return $data;
}

2)型号:model_guard.php (函数get_data()get_data2()会返回有关学生和函数的更多信息insert_student_out()将学生插入student_outside table

public function get_data($id){
    $this->db->select('leave_id,leave_from_roll_no,leave_student_name,leave_going_to,leave_from_date,leave_till_date,leave_hostel_no,leave_status');
    $this->db->from('leave_application');
    $this->db->where('leave_id',$id[0]);
    $query=$this->db->get();
    $data1=$query->result();
    $data2=$this->get_data2($data1);
    $final_array=array_merge($data1,$data2);
    return $final_array;
    }

    public function get_data2($array){
    foreach ($array as $key) {
    $roll_no=$key->leave_from_roll_no;
    }
    $this->db->select('student_year,student_semester,student_parent_email');
    $this->db->from('students');
    $this->db->where('student_roll_no',$roll_no);
    $query=$this->db->get();
    $data=$query->result();
    return $data;
    }

    public function insert_student_out($std_data){
    $roll_no=$std_data[0]->leave_from_roll_no;
    $id=$std_data[0]->leave_id;
    $date_out=date('Y-m-d');
    $inside_date=NULL;
    $date_allowed=$std_data[0]->leave_till_date;
    $array=array(
    'outside_id'=>$id,
    'outside_roll_no'=>$roll_no,
    'outside_date_out'=>$date_out,
    'outside_date_in'=>$inside_date,
    'outside_date_allowed'=>$date_allowed
    );
    if($this->db->insert('students_outside',$array)){
        return true;
    }else{
        false;
    }


    }

2 个答案:

答案 0 :(得分:0)

您正尝试使用codeignator

插入batch_array

使用batch_array的正确语法是: -

$array=array(
    'coloum_name'=>$id,
    'coloum_name'=>$roll_no,
    'coloum_name'=>$date_out,
    'coloum_name'=>$inside_date,
    'coloum_name'=>$date_allowed
    );

if($this->db->insert_batch('students_outside',$array)){
        return true;
    }else{
        false;
    }

您可以在此处阅读手册insert_batch

答案 1 :(得分:0)

好的,我假设你在$std_data中有多条记录。然后在你的模型的insert_student_out()函数中试试这个 -

public function insert_student_out($std_data){

 foreach($std_data as $row){
       $roll_no=$row->leave_from_roll_no;
       $id=$row->leave_id;
       $date_out=date('Y-m-d');
       $inside_date=NULL;
       $date_allowed=$row->leave_till_date;
       $array=array(
              'outside_id'=>$id,
              'outside_roll_no'=>$roll_no,
              'outside_date_out'=>$date_out,
              'outside_date_in'=>$inside_date,
              'outside_date_allowed'=>$date_allowed);

       $this->db->insert('students_outside',$array);

  }
}