有没有一种方法可以将某些值(从一种形式)插入Codeigniter中的两个不同表中?

时间:2019-01-14 16:57:09

标签: php database codeigniter

我正在尝试将注册的用户的名称(名字和姓氏)详细信息插入 [名字] [姓氏] < user_details表的/ strong>列。因此,电子邮件密码 snm_users表

各自的列中

如何在 Codeigniter 中实现这一目标?

这是我输入形式的摘录:

<input type="text" name="fname">
<input type="email" name="email">
<input type="password" name="password">

这是处理数据库的模型:

class User_model extends CI_Model {
    public function register ($enc_password){
        $data = array(
            'fname' => $this->input->post('fname'),
            'email' => $this->input->post('email'),
            'password' => $enc_password
        );
        //insert user to database
        return $this->db->insert('snm_users', $data);
    }
}

1 个答案:

答案 0 :(得分:0)

我相信您是CodeIgniter的新手。最好做一些研究以获得有关MVC(模型视图控制器)实际工作方式的基本概念。我将给您一个基本的想法:VIEW是您使用HTML的地方,例如显示表单和任何输出内容,等等。MODEL是您编写数据库交互的代码的地方。像INSERTIONS,UPDATIONS,SELECT查询等。CONTROLLER是您进行业务逻辑,验证等的地方。

在上面发布的代码段中,您正在使用直接从MODEL内部的表单提交的数据。这不是最好的方法。 (从CONTROLLER内部的$this->input->post()接受它,然后进行验证并将其传递给MODEL。

回到您的问题,您想将first_namelast_nameuser_details_table的{​​{1}}和email插入另一个表({{1 }})

为此,首先在主表中进行插入。我相信它的password。我假设您有一个名为snm_users_table的主键或用于标识每个记录的名称。因此,一旦插入到该主User表中,就可以使用以下函数获取snm_users_table(此新插入的行的ID):user_id

现在,您可以使用上述函数返回的last_insert_id在第二张表$this->db->insert_id()上插入其他详细信息。

在这些插入过程中可以使用TRANSACTIONS,这样就不会在出现任何错误的情况下最终在一个表中插入记录,而在另一表中没有记录。因为TRANSACTIONS可以帮助您在发生任何问题时回滚更改!

在此处了解更多信息: https://www.codeigniter.com/user_guide/database/transactions.html

希望这会给您一个想法。 :)