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

Posted

技术标签:

【中文标题】使用 CodeIgniter 将数组数据插入两个表中【英文标题】:insert array data into two table using CodeIgniter 【发布时间】:2014-01-31 07:41:54 【问题描述】:

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

用户

user_id(int) user_email(varchar(64)) 用户名(varchar(64)) user_pass(varchar(64))

个人资料

prof_id(int) user_id(int) first_name(varchar(64)) last_name(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 表仍然为空。请帮我更正我上面的添加帐户功能

【问题讨论】:

【参考方案1】:

交换线路:线路$this->db->trans_complete(); 不可达。

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

 $this->db->trans_complete(); 

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

【讨论】:

谢谢 kumar_v.. 这很有帮助 感谢 kumar,您能否指导我如何使用 user_id 作为外键加入两个表 是否要求从两个表中获取记录?还是要创建外键? 我想在用户表中创建外键,这样我就可以在我的模型中进行 CRUD 操作。 参考这个:***.com/questions/6977086/…【参考方案2】:

在控制器中

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

    

    $data1_id = $this->m_signup->add_account($data1);


    $data2 = array($data1_id,$first_name, $last_name,);

    $data_id = $this->m_signup->add_account($data2,$data1_id);

    redirect('login');

【讨论】:

【参考方案3】:

在模型中

function add_account($data1 = '', $data2 = '' , $id = '') 
    $this->db->trans_start();

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

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

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

    $this->db->trans_complete(); 

    

【讨论】:

以上是关于使用 CodeIgniter 将数组数据插入两个表中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 codeigniter 导入 CSV 文件并将数据插入到多个表中?

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

将数据从数据库插入谷歌图表codeigniter

使用codeigniter将数据插入数据库

使用 codeigniter 连接表并将数据提取到表中

Codeigniter - 教义插入错误 - 多对一关系