插入到 2 个表时出现外键约束错误


Foreign key constraint error when inserting to 2 tables

我有一个使用CodeIgniter框架的简单注册程序,用户在其中输入他们的名字,用户名和密码,然后将这些值存储到我的数据库中。

当我尝试插入 2 个表时遇到困难,我收到一个外部约束错误。现在我拥有的 2 个表格看起来像这样(请原谅我的格式不太确定如何在此处格式化表格):

Table1
ID INT Auto-Increment Primary key
Username varchar 
Password varchar

还有我的第二张桌子

Table2
ID INT Foreign key
Name varchar

现在我的 php 代码我用来添加这些值:

        $data = array('username' => $username, 'password' => $hashpwd);
        $this->db->insert('Table1', $data);
        $profiles = array('name' => $name);
        $this->db->insert('Table2', $profiles);

如您所见,我首先添加到table1,此查询工作正常并插入到我的数据库中,但是第二个查询未添加到数据库中,并且出现以下错误:

Cannot add or update a child row: a foreign key constraint fails (`mydb`.`table2`, CONSTRAINT `table2_ibfk_1` FOREIGN KEY (`ID`) REFERENCES `table1` (`ID`))
INSERT INTO `table2` (`name`) VALUES ('John')

有人可以如何在不必输入 ID 的情况下添加到两个表中,因为我不会知道 ID 是什么?

您还应该在表2中插入一个表中已经存在的ID,而不仅仅是"名称"字段。您可以使用 http://www.php.net/manual/en/mysqli.insert-id.php 获取上次插入到 Table1 中的 id(需要 php5)。

您可以将Table2.ID列设置为空。

但是,由于您刚刚通过INSERT创建了ID Table1,我认为您可以使用该新创建的 ID。

似乎Name应该在Table1,但我对这些实际在做什么并不乐观。