2017-03-24 159 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')」; –