我创建了两个表。一个用于学生,并将 stu_id 作为主键,另一个保存有关学生的信息,并将 stu_id_fk 作为外键。
我使用 phpmyadmin 的界面设置了两者之间的关系并且它工作正常,它甚至在将鼠标悬停在值上时显示外键引用的学生(我直接从 phpmyadmin 插入一些值而不是通过 php 代码)。所以当我想插入学生的信息时,我创建了一个学生“Billy”,我使用了以下查询
$query= " INSERT INTO stu_details (phone,email,location,website,description ) VALUES ('$phone', '$email', '$location', '$website', '$description') ";
我得到这个错误:
Cannot add or update a child row: a foreign key constraint fails
现在我推断,当在主表中创建一个学生时,我也应该在详细信息表中插入一个新值,所以当我想插入学生的信息时,该表将具有 stu_id_fk,其余的细节将是空白的,可以插入。那是对的吗?
这是我添加学生的查询
$qry= "INSERT INTO students (type,class, username,password,description,reg_date) values ('$type', '$class','$username','$password','$description','$date')";
我做错了什么?是我在主表中添加学生时没有在子表中插入FOREIGN KEY值吗?如果是,请问我应该如何编辑我的查询以便能够在一个查询中插入到两个表中?
编辑:我的问题与建议的类似问题不同。我想问的是在查询代码中应该写些什么,以免因为外键而出错。
谢谢。
最佳答案
为了在代码层面维护 FK 关系,您必须遵循以下规则:
- 将数据插入主表并从该插入操作中获取
插入的 ID
。 - 将具有该主 ID 的子表中的数据插入到引用父表的子表中。
关于php - PHP中使用外键的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42359136/