【问题标题】:codeigniter : inserting data/record into 2 tablescodeigniter:将数据/记录插入到 2 个表中
【发布时间】:2016-04-19 06:02:20
【问题描述】:

我有 2 个表 'pengguna' 和 'mahasiswa',然后 1 个表格有一个表格,其中 1 个表格插入到 2 个表格中,到目前为止,我设法插入数据,但是当它与“主键”和“外键”它有问题,从下面的代码中可以看出id_penggunapengguna主键id_penggunamahasiswa外键 问题是当我插入数据时,来自penggunaid_pengguna 有它的价值,而在表mahasiswa 它没有价值,下面是我的代码,有什么简单的方法还是我做错了什么?

彭古纳桌 马哈西瓦桌

控制器

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'));
}

型号

function create($table,$data){
    $query = $this->db->insert($table, $data);
    return $query;
}

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您需要从模型文件中返回最后一个插入 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);
    

    【讨论】:

      【解决方案2】:

      在将数据插入到第二个表(即mahasiswa)之前,您需要获取在表1(pengguna)中插入数据后创建的主ID。

      这可以通过两种方式完成:

      1. 使用 codeigniter 的 insert_id() 函数获取最后一个插入 ID。

        function create($table,$data) {
            $query = $this->db->insert($table, $data);
            return $this->db->insert_id(); } // return last insert id
        
      2. 在第一个表中插入数据后,获取具有相同username的行的id。 (为此,您必须在 username 列中拥有唯一的用户名)这将返回相应的 ID。
        注意:您也可以使用电子邮件列进行此操作。

      来源/参考:详解-Inserting data in 2 tables through 1 Form - CodeIgniter

      【讨论】:

        【解决方案3】:

        你可以做到这一点(只有很少的变化)

        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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-06
          • 2012-12-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多