【问题标题】:The right way to use foreign keys in PHPPHP中使用外键的正确方法
【发布时间】:2017-07-10 14:13:21
【问题描述】:

我创建了两个表。一个用于学生,将 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') ";

我得到这个错误:

无法添加或更新子行:外键约束失败

现在我推断,在主表中创建学生时,我还应该在详细信息表中插入一个新值,所以当我要插入学生信息时,该表将有 stu_id_fk 其余的详细信息将为空白并准备插入。那是对的吗?

这是我添加学生的查询

$qry= "INSERT INTO students (type,class, username,password,description,reg_date) values ('$type', '$class','$username','$password','$description','$date')"; 

我做错了什么?是不是我在主表中添加学生时没有在子表中插入 FOREIGN KEY 值?如果是,我应该如何编辑我的查询以便能够在一个查询中插入两个表?

编辑:我的问题与建议的类似问题不同。我在询问在查询代码中写什么,以免因为外键而出错。

谢谢。

【问题讨论】:

  • 我在发布我的问题之前阅读了该主题,但它不包含与我的问题相关的信息,但感谢您指出。

标签: php mysql


【解决方案1】:

为了在代码级别维护 FK 关系,您必须遵循以下规则:

  • 在主表中插入数据并从该插入操作中获取inserted ID
  • 在引用父表的子表中插入具有该主 ID 的子表中的数据。

【讨论】:

  • 所以如果我使用会话,登录用户将通过他们持有的 ID 来识别,对吗?然后我可以让他们更新自己的信息并使用问题中的相同查询,但将会话中的 ID 值添加到其中,并将其与他们想要插入的任何数据一起插入到子表中,如 stu_id_fk。听起来对吗?
猜你喜欢
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
相关资源
最近更新 更多