Php 使用CodeIgniter将数组数据插入到两个表中

Php 使用CodeIgniter将数组数据插入到两个表中,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,我有一个登记表,将插入数据输入到两个不同的表使用注册功能。 这是表结构: 用户 用户id(int) 用户电子邮件(varchar(64)) 用户名(varchar(64)) 用户通行证(varchar(64)) 配置文件 教授id(国际) 用户id(int) 名字(varchar(64)) 姓氏(varchar(64)) …(其他领域) 我将变量放入两个不同的数组($data1和$data2) 这是我的控制器: function add_account() { $this->

我有一个登记表,将插入数据输入到两个不同的表使用注册功能。 这是表结构:

用户

  • 用户id(int)
  • 用户电子邮件(varchar(64))
  • 用户名(varchar(64))
  • 用户通行证(varchar(64))
配置文件

  • 教授id(国际)
  • 用户id(int)
  • 名字(varchar(64))
  • 姓氏(varchar(64))
  • …(其他领域)
我将变量放入两个不同的数组($data1和$data2) 这是我的控制器:

function add_account() {
    $this->load->model('m_signup');
    // get form variable
    $first_name = $this->input->post('first_name');
    $last_name = $this->input->post('last_name');
    $user_email = $this->input->post('user_email');
    $user_name = $this->input->post('user_name');
    $user_pass = $this->input->post('user_pass');


    $data1 = array($user_name, $user_email, $user_pass);
    $data2 = array($first_name, $last_name);

    $this->m_signup->add_account($data1, $data2);

    redirect('login');
}
模型是这样的:

function add_account($data1, $data2) {
    $this->db->trans_start();

    $sql1 = "INSERT INTO users(user_name, user_email, user_pass) 
            VALUES (?, ?, ?)";

    $this->db->query($sql1, $data1); 
    $id_user = $this->db->insert_id(); 

    $sql2 = "INSERT INTO profiles(user_id, first_name, last_name) 
            VALUES ($id_user, ?, ?)"; 
    $this->db->query($sql2, $data2);

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

    $this->db->trans_complete(); 

}

当我提交注册时,它在表users中工作,但是表profiles仍然是空的。请帮我更正上面的添加帐户功能。

交换行:Line
$this->db->trans_complete()

您正在提交事务之前返回id

 $this->db->trans_complete(); 

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

谢谢库马尔五世。。这非常有帮助谢谢kumar,你能给我一个指导,如何使用用户id作为外键加入两个表吗?你要求从两个表中获取记录吗?还是要创建外键?我想在users表中创建外键,以便在我的模型中执行CRUD操作。请参阅: