如何在2表中插入数据

时间:2018-02-02 09:55:06

标签: php mysql sql codeigniter

我有2个表'userlogin'和'user'然后1有一个表单,其中1表格插入2个表,到目前为止我设法插入数据但是当它与“主键”和“外键“它有问题,你可以从下面的代码中看到id_login来自表user_sin是一个主键而id_login来自表用户是一个外键问题是当我插入数据时,来自userlogin的id_login在表用户中有它的值它没有价值,下面是我的代码,是否有任何简单的方法或我做错了什么?

控制器

function add()
{
    $this->form_validation->set_rules('nama','Nama Lengkap','required');
    $this->form_validation->set_rules('username','Username','required');
    $this->form_validation->set_rules('password','Password','required');
    $this->form_validation->set_rules('jenis_user','Jenis User','required');
    $this->form_validation->set_rules('alamat','alamat','required');
    $this->form_validation->set_rules('hp','hp','required');
    $this->form_validation->set_rules('email','email','required');
    if($this->form_validation->run()==TRUE)
    {
        $username=$this->input->post('username',TRUE);

        $params = array(
            'nama'       => $this->input->post('nama',TRUE),
            'username'   => $this->input->post('nama',TRUE),
            'password'   => md5($this->input->post('password',TRUE)),
            'jenis_user' => $this->input->post('jenis_user',TRUE),
            'alamat'     => $this->input->post('alamat',TRUE),
            'hp'         => $this->input->post('hp',TRUE),
            'email'      => $this->input->post('email',TRUE),
        );

        if($this->Admin_model->cek_username($username)){
            if($this->Admin_model->user_daftar($username,$params))
            {
                set_header_message('success','Tambah Pengguna','Berhasil menambahkan pengguna');
                redirect(base_url(akses().'/pengguna'));
            } else {
                set_header_message('danger','Tambah Pengguna','Gagal menambahkan pengguna');
                redirect(base_url(akses().'/pengguna/add'));
            }
        } else {
            set_header_message('danger','Oops.. Maaf','Username sudah ada yang menggunakan');
            redirect(base_url(akses().'/pengguna/add'));
        }

    } else {
        $meta['judul']="Tambah Pengguna";
        $this->load->view('tema/header',$meta);     
        $d['jenis_user']=$this->Admin_model->user_akses_data();
        $this->load->view(akses().'/pengguna/penggunaadd',$d);
        $this->load->view('tema/footer');
    }
}

模型

function user_daftar($username,$params)
{   
    if($this->db->insert('userlogin', $params)) {
        return true;
    } else{
        return false;
    }
}

谢谢

3 个答案:

答案 0 :(得分:1)

在模型中使用两个不同的数组和两个不同的函数,以在两个不同的表中插入不同的数据。

答案 1 :(得分:0)

我认为以下代码可以正常工作,如果两个表的数据相同,则需要制作两个数组。



 function user_daftar($username,$params)
{   
    if($this->db->insert("userlogin", $params)) {
        $id_login=$this->db->insert_id(); // user login id
		$params["id_login"]=$id_login;
		$this->db->insert("user", $params); 
		
		return true;
    } else{
        return false;
    }
}




答案 2 :(得分:0)

首先根据Table属性分离数据,然后传递两个模型

 $params = array(
            'nama'       => $this->input->post('nama',TRUE),
            'username'   => $this->input->post('nama',TRUE),
            'password'   => md5($this->input->post('password',TRUE)),

        );
 $params2 = array(
          'jenis_user' => $this->input->post('jenis_user',TRUE),
            'alamat'     => $this->input->post('alamat',TRUE),
            'hp'         => $this->input->post('hp',TRUE),
            'email'      => $this->input->post('email',TRUE),

        );

$this->Admin_model->modelXXX($$params1,$params2)

模型方面的一个函数有两个参数,但有一点需要考虑,首先,将数据插入参考表$ id_login = $ this-> db-> insert_id();然后插入第二个表

 function modelXXX($params1,$params2)
{   
    if($this->db->insert("userlogin", $params1)) {
        $id_login=$this->db->insert_id(); // user login id
        $params["id_login"]=$id_login;
        $this->db->insert("user", $params2); 

        return true;
    } else{
        return false;
    }
}