2015-05-09 120 views

回答

0

为了将表1的主键插入到表2中,代码点火器内置了辅助函数以帮助完成此任务。

//prepare data for table 1  
$data = array(
    'conent' => 'My content', 
); 
//insert into table 1 
$this->db->insert('table1',$data); 

//prepare data for table 2 
$data = array(
    'table1_id' => $this->db->insert_id(), 
); 
//insert into table 2 
$this->db->insert('table2',$data); 
+0

@Sudarshan你能解释这是怎么回事吗?它看起来像这个链接中使用的方法是相同的,如上所示 –

+0

看到下面的评论,我认为你看到了第一个。它更好地获取最新插入的ID。 – Sudarshan

+0

非常感谢! – user3819713

0

正如您在table2中引用table1_id所以您必须先插入您的table1字段。然后你可以插入到table2中。 这里是你可以在你的控制器

public function insert(){ 
    $data['table1_data']=$this->ur_model->insert_table1(); 
    $latest_id=$this->ur_model->get_latest_id(); 
    $data['table1_data']=$this->ur_model->insert_table2($latest_id); 
} 

在你的模型做什么

function insert_table1(){ 
    $data=array(
       'content'=>$this->input->post('content') 
     ); 
    $this->db->insert('table1',$data); 
    //better return true on success 
} 

public function get_latest_id(){ 
    $sql=$this->db->query("SELECT MAX(id) as id FROM table1"); 
    return $sql->row_array(); 
} 

function insert_table2($table1_id){ 
    $data=array(
       'content'=>$this->input->post('content'), 
       'table1_id'=>$table1_id['id'] 
     ); 
    $this->db->insert('table2',$data); 
} 

所以,你总是会得到最新的ID插入table1_id。

+0

我在问问题之前就想到了这个解决方案,我开始想知道如果我的网站上有非常大的流量,并且有两个用户同时调用此功能,该怎么办?这是可能的顺序:第一个用户调用,所以数据插入到table1,但在同一时间第二个用户调用函数,所以再次数据插入到table1和第一个用户将有错误的数据。本·布罗德利答案在我看来更好 – user3819713

+0

检查此http://gotoanswer.com/?q=How+to+insert+into+multiple+tables+with+CodeIgniter第二帖子 – Sudarshan

+0

上述解决方案,你接受作品,但在小学关键的情况下,如果这不是主键,可能会产生问题。 – Sudarshan

相关问题