我有2张桌子&pengguna'和' mahasiswa'然后1有一个表格,其中1表格插入2个表格,到目前为止我设法插入数据但是当它与"主键和#34;和"外键"它有问题,因为您可以从下面的代码id_pengguna
中看到表pengguna
中的主键,表id_pengguna
中的mahasiswa
是< strong>外键问题是,当我插入数据时,id_pengguna
中的pengguna
具有值,而在表mahasiswa
中它没有值,下面是我的代码,是有什么简单的方法或我做错了什么?
PENGGUNA TABLE MAHASISWA TABLE
控制器
public function insertMahasiswa(){
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$data1 = array(
'username'=>$username,
'password'=>$password,
'level'=>3,
);
$nim = $this->input->post('nim');
$nama = $this->input->post('nama');
$email = $this->input->post('email');
$telepon = $this->input->post('telepon');
$data = array(
'nim'=>$nim,
'nama_mahasiswa'=>$nama,
'email'=>$email,
'telepon'=>$telepon,
);
$insert = $this->MMahasiswa->create('pengguna',$data1);
$insert1 = $this->MMahasiswa->create('mahasiswa',$data);
redirect(site_url('mahasiswa/data?balasan=1'));
}
MODEL
function create($table,$data){
$query = $this->db->insert($table, $data);
return $query;
}
答案 0 :(得分:4)
您需要从模型文件中返回最后一个插入ID
在模型中
function create($table,$data){
$query = $this->db->insert($table, $data);
return $this->db->insert_id();// return last insert id
}
在控制器中
$id_pengguna = $this->MMahasiswa->create('pengguna',$data1);
$data = array(
'nim'=>$nim,
'nama_mahasiswa'=>$nama,
'email'=>$email,
'telepon'=>$telepon,
'id_pengguna'=>$id_pengguna// add last insert id to mahasiswa table
);
$insert1 = $this->MMahasiswa->create('mahasiswa',$data);
答案 1 :(得分:1)
在将数据插入第二个表(mahasiswa
之前,您需要获取在表1(pengguna
)中插入数据后创建的主要ID。
这可以通过两种方式完成:
使用codeigniter的insert_id()
函数抓取最后一个插入ID。
function create($table,$data) {
$query = $this->db->insert($table, $data);
return $this->db->insert_id(); } // return last insert id
在第一个表中插入数据后,获取具有相同username
的行的ID。 (为此,您必须在username
列中包含唯一的用户名)这将返回相应的ID
注意:您也可以使用电子邮件列执行此操作。
来源/参考:详细解释 - Inserting data in 2 tables through 1 Form - CodeIgniter
答案 2 :(得分:0)
你可以这样做(只有少数变化)
Controller.php这样
public function insertMahasiswa(){
$username = $this->input->post('username');
$password = md5($this->input->post('password'));
$data1 = array(
'username'=>$username,
'password'=>$password,
'level'=>3,
);
$nim = $this->input->post('nim');
$nama = $this->input->post('nama');
$email = $this->input->post('email');
$telepon = $this->input->post('telepon');
$data = array(
'nim'=>$nim,
'nama_mahasiswa'=>$nama,
'email'=>$email,
'telepon'=>$telepon,
);
$insert = $this->MMahasiswa->create('pengguna',$data1);
$insert1 = $this->MMahasiswa->create('mahasiswa',$data);
$insert = $this->MMahasiswa->create('pengguna',$data1,'mahasiswa',$data);
redirect(site_url('mahasiswa/data?balasan=1'));
}
model.php
function create($table1, $data1, $table2, $data2){
$this->db->insert($table1, $data1);
$id_table1 = $this->db->insert_id();
array_unshift($data2, array('id_pengguna'=>$id_table1));
$this->db->insert($table2, $data2);
$id_table2 = $this->db->insert_id();
$return_data = array($table1 => $id_table1, $table2 => $id_table2);
return $returndata;
}