将信息发送到数据库时出现网站表单问题



我将尝试以最好的方式解释这一点。所以我有一个包含 3 个表的数据库:客户、登录名和地址,它们看起来像这样:

customerID
first_name
last_name
email
phone
login_fk
address_fk
loginID
username
password
addressID
housenumber
streetname
postcode
city

法典:

$query = "INSERT INTO customers ". "(first_name,last_name,phone,email) ". "VALUES('$fname','$sname','$phone','$email');"; 
$result = mysqli_query($conn, $query) or die(mysqli_error($conn)); 

我的网络表单将登录详细信息和地址详细信息发送到数据库没有问题。但是,我收到此消息,但没有向客户表发送任何内容:

无法添加或更新子行:外键约束失败 (database1customers,约束customers_ibfk_1外键(login_fk(引用login(loginID(更新级联(

我正在为所有字段(使用 Web 表单(分配值,除了自动递增的主键和 fk 值。我认为提出此消息是因为我没有设置 fk 值还是我错了?如果我是正确的,如何从其他表中获取值以确保关系正确?即login_fk和登录 ID 具有关系,并且 ID 应与 address_fk 和 addressID 字段相同且相同。如果我使用数据库插入值,那么关系很好,因为我手动分配 fk 值以匹配登录 ID 和地址 ID,所以我假设数据库很好,我只需要使用 php 从登录名和地址中获取 ID 并将其发送到客户表 fk 值?我曾多次使用数据库,也多次使用php和html网站,但这是我第一次尝试创建动态网站,因此如果这是一个愚蠢的问题,我深表歉意,但希望它能教会我更多,其他人在创建动态网站时可能会遇到同样的问题。

这都是关于主键、候选键和外键概念的。 在这里,字段"login_fk"在您的"客户"表中声明,这是一个子表,字段"loginID"作为在登录表中声明的主键,这是您的参考表/父表。 因此,首先您必须将数据插入"登录"表(父表(,然后才能将数据插入"cusomers"表。

有关主键和外键的更多详细信息,请访问 https://www.w3schools.com/sql/sql_foreignkey.asp

首先在登录表中插入您的登录 ID 和密码,然后对客户运行插入查询,以便您的外键不会失败

最新更新