2017-03-24 112 views
0

我试图找出我的代码出了什么问题。 这是我recieving数据库INSERT INTO错误

“不能添加或更新子行,外键约束失败”的错误

这是我的代码

<?php 
$sql = "INSERT INTO stasjon (navn) VALUES ('skogen', 'voksenlia') "; 
$resultat = $kobling->query ($sql); 

$sql ="SELECT * FROM stasjon WHERE navn = ('skogen')"; 
$resultat = $kobling->query ($sql); 
while ($rad = $resultat->fetch_assoc()) { 
    $stasjon_id = $rad['stasjon_id']; 
} 
$sql = "INSERT INTO linjestasjon (linje_nr, stasjon_id) VALUES ('1','$stasjon_id')"; 
$resultat = $kobling->query ($sql); 
if($kobling->query($sql)) { 
    echo "Spoerringen $sql ble gjennomfoert."; 
} else { 
    echo "Noe gikk galt med spoerringen $sql ($kobling->error)."; 
?> 

有些是在挪威,因为这是我制作的数据库的语言。我试图将值添加到两个不同的表(它有stasjon_id作为外键)在此先感谢

+0

请不要使用不适用于您的问题的标签。我删除了数据库标记,因为它不清楚你实际使用了哪一个。请添加*标签*您实际使用的数据库 –

+0

请做'描述stasjon'和'描述linjestasjon'然后发布结果。这将帮助我们找出原因。 – Dimi

+1

1列和2个值;数学不会加起来 –

回答

0

外键约束检查您插入或更新到特定字段的值存在于另一个其他字段中表。假设我有2个表如下

CREATE TABLE TableA 
(
    SeqNo INT PRIMARY KEY, 
    Name VARCHAR(500 
) 

CREATE TABLE TableB 
(
    SeqNo INT NULL FOREIGN KEY REFERENCES TableA(SeqNo), 
    Name VARCHAR(50) 
) 

所以,当你插入一个新的记录到Tableb.SeqNo申请,该值应该不空,也可以存在于TableA.SeqNo一定的价值。

所以在插入值之前,请确保您插入的值满足您的外键约束

+0

请再次查看他们的第一个查询,并查看他们问题下的意见。你的答案可能会有所帮助,但它并不能解决所发布的语法。该错误来自第一个查询。 –

+0

对不起,我错过了那部分。尝试更改第一个查询如下 $ sql =“INSERT INTO stasjon(navn)VALUES('skogen'),('voksenlia')”; –