我有一个使用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
,但我对这些实际在做什么并不乐观。