将信息发送到数据库

时间:2017-07-27 19:38:18

标签: php html sql database phpmyadmin

我会尽力以最好的方式解释这一点。所以我有一个包含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)); 

我的webform将登录详细信息和地址详细信息发送到数据库没问题。但是我得到了这条消息,没有任何内容发送给客户表:

无法添加或更新子行:外键约束失败(database1customers,CONSTRAINT customers_ibfk_1 FOREIGN KEY(login_fk)参考loginloginID)ON UPDATE CASCADE)

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

2 个答案:

答案 0 :(得分:1)

关键是主键,候选键和外键概念。 这里在“customers”表中声明的字段“login_fk”是子表,而字段“loginID”是在Login表中声明的主键,它是您的参考表/父表。 因此,首先您必须将数据插入“登录”表(父表),之后才能将数据插入“cusomers”表中。

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

答案 1 :(得分:0)

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