php - PHP中使用外键的正确方法

标签 php mysql

我创建了两个表。一个用于学生,并将 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/

相关文章:

mysql - SQL : Syntax ERROR 1064 (42000): can't identify the issue?

php - 无法设置具有多个条件的 WHERE 子句

php - Zend DB 无法模拟 MS SQL 的限制和偏移量

php - 读取由 PHP 生成的包含 @attributes 的 JSON(使用 jQuery)

php - 如何在 Laravel Controller 中包含一些文件

php - 有人可以帮助找出这个 PHP 文件中语句的问题吗?

mysql (mariadb) 按两列排序不起作用

php - 无法从 ubuntu 服务器上的 cakephp shell 发送电子邮件

php - 在Mysql表中搜索带空格或不带空格的关键字

MySQL 截断 GROUP_CONCAT 函数的连接结果