我有一个简单的注册程序,使用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是什么?
答案 0 :(得分:0)
您可以使Table2.ID
列可以为空。
但是,由于您刚刚通过ID
将INSERT
创建为Table1
,我认为您可以使用新创建的ID。
似乎Name
似乎应该在Table1
,但我并不肯定这些是在做什么。
答案 1 :(得分:0)
您应该向表2中插入一个已存在于表1中的ID,而不仅仅是' name'领域。您可以使用http://www.php.net/manual/en/mysqli.insert-id.php(需要php5)获取表1中最后一次插入的ID。