使用CodeIgniter框架将数据插入到具有外键的多个表中

时间:2017-06-15 06:58:15

标签: php mysql codeigniter

我尝试使用CodeIgniter将数据插入到具有外键的多个表中。

这是我的第一张名为 koor_pen 的桌子
no_koor( primary )| utm_y | utm_x | latit |隆基

这是我的第二个表叫做 input_pen
no_form( primary )| kode_bps | no_obs | no_koor(外国)| t_tanah | catatan

这是我的控制器

function c_submit(){
    $data = array(
        'no_form' => $this->input->post('noform'),
        'kode_bps' => $this->input->post('kodebps'),
        'no_obs' => $this->input->post('noobs'),
        'no_koor' => $this->input->post('nokoor'),
        'tanaman_u' => $this->input->post('tutama'),
        't_tanah' => $this->input->post('ttanah'),
        'catatan' => $this->input->post('cat')
    );

    $datakoor = array(
        'no_koor' => $this->input->post('nokoor'),
        'utm_y' => $this->input->post('y'),
        'utm_x' => $this->input->post('x'),
        'latit' => $this->input->post('deg')." ".
                    $this->input->post('min')." ".
                    $this->input->post('sec'),
        'longi' => $this->input->post('deg2')." ".
                    $this->input->post('min2')." ".
                    $this->input->post('sec2')
    );

    $no_obs = $this->session->userdata('no_obs');
    $this->m_input->m_submit($data, $datakoor);
    redirect(base_url("c_input"));
}

和模型

function m_submit($data, $datakoor) {

    $this->db->trans_start();

    $this->db->insert('koor_pen', $datakoor); 
    $no_koor = $this->db->insert_id(); 

    $this->db->where('no_koor',$no_koor);
    $this->db->insert('input_pen', $data);

    $this->db->trans_complete(); 

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

}

当我运行代码时,它会显示如下错误 enter image description here

3 个答案:

答案 0 :(得分:2)

您的值变为空。您必须在$no_koor中传递$data,以便可以替换该值。试试这个:

function m_submit($data, $datakoor) {

    $this->db->trans_start();

    $this->db->insert('koor_pen', $datakoor); 
    $no_koor = $this->db->insert_id(); 

    //$this->db->where('no_koor',$no_koor);
    $data['no_koor'] = $no_koor;
    $this->db->insert('input_pen', $data);

    $this->db->trans_complete(); 

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

}

答案 1 :(得分:1)

问题在这里 no_koor(foreign)这是你的外键,在你的查询no_koor中,当你在图片中发送时,这个字段在你的查询中得到“”。所以请先检查一下你的问题。

答案 2 :(得分:0)

错误与图片中显示的foreign key constraint有关。规则是,您只能添加或更新child表中已存在于parent表中的值。因此,在插入时,请确保您要在child表中插入的值已存在于parent表中。

有时候插入序列也很重要,可能是查询中的值是他们的,但是你是先运行子表查询。因此,在这种情况下也要检查订单。