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

时间:2013-12-18 21:20:04

标签: php mysql sql codeigniter

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

当我尝试插入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 个答案:

答案 0 :(得分:0)

您可以使Table2.ID列可以为空。

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

似乎Name似乎应该在Table1,但我并不肯定这些是在做什么。

答案 1 :(得分:0)

您应该向表2中插入一个已存在于表1中的ID,而不仅仅是' name'领域。您可以使用http://www.php.net/manual/en/mysqli.insert-id.php(需要php5)获取表1中最后一次插入的ID。