2015-05-01 124 views
0

我遇到了insert_id問題。我使用的是CodeIgniter。我有一種方法,其中我插入一些值,並在其中我返回如何在同一模型中使用另一種方法中的模型中的一種方法使用insert_id

$insert_id=$this->db->insert_id(); 
return $insert_id;` 

我想在同一模型中的另一種方法中使用此值。我試過了:$insert_id=$this->add_teacher_subject();但以這種方式,第一個方法再次運行,我沒有收到last_insert_id,但是這個值爲+1。請告訴我,我怎麼能解決這個問題?

我的模式是:

public function add_teacher_subject() { 

     $date = new DateTime("now"); 
     $data=array(
      'teacher_id'=>$this->input->post('teacher'), 

      'user_id'=>$this->session->userdata['user_id'], 

      'created_at'=>$date->format('Y-m-d H:i:s') 

     ); 

     $this->db->insert('student_surveys',$data); 
     $insert_id=$this->db->insert_id(); 
     return $insert_id; 

    } 
    public function survey_fill() 
    { 
      $insert_id=$this->add_teacher_subject(); 
     if ($this->input->post('answer')) { 
      $answers= $this->input->post('answer');   
      if (null !==($this->input->post('submit'))) { 
       $date = new DateTime("now"); 
       foreach($answers as $question_id=>$answer) 
       { 
        $data = array(
         'user_id'=>$this->session->userdata['user_id'], 
         'question_id'=>$question_id, 
         'answer'=>$answer,    

         'student_survey_id' => $insert_id 
        ); 

        $this->db->insert('survey_answers', $data); 

       } 

      } 

回答

2

您可以使用會話[]保持最後插入ID:

public function add_teacher_subject() { 
    $date = new DateTime("now"); 
    $data = array(
     'teacher_id' => $this->input->post('teacher'), 
     'user_id' => $this->session->userdata['user_id'], 
     'created_at' => $date->format('Y-m-d H:i:s') 
    ); 

    $this->db->insert('student_surveys', $data); 
    $insert_id = $this->db->insert_id(); 
    $newdata = array('insert_id' => $insert_id); 
    $this->session->set_userdata($newdata); 
    return $insert_id; 
} 

public function survey_fill() { 
    $insert_id = $this->session->userdata('insert_id'); 
    if ($this->input->post('answer')) { 
     $answers = $this->input->post('answer'); 
     if (null !== ($this->input->post('submit'))) { 
      $date = new DateTime("now"); 
      foreach ($answers as $question_id => $answer) { 
       $data = array(
        'user_id' => $this->session->userdata['user_id'], 
        'question_id' => $question_id, 
        'answer' => $answer, 
        'student_survey_id' => $insert_id 
       ); 

       $this->db->insert('survey_answers', $data); 
      } 
     } 
    } 
} 
+1

謝謝您的回答!我試着用第一種方法,但我得到了:'student_survey_id'列不能爲空,survey_fill()中的$ insert_id爲空。 –

+0

因此,您正在使用codeigniter數據庫自動功能進行插入/更新。 –

+1

你可以保存在其他地方像$ config文件或定義一個靜態庫來保持insert_id。 –

相關問題