2017-07-27 69 views
0

我會盡可能以最好的方式嘗試解釋這一點。所以,我有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)參考文獻loginloginID)ON UPDATE CASCADE )

我將值分配給所有字段(使用網絡表單),除了自動遞增的主鍵和fk值。我假設這條消息正在提出,因爲我沒有設置fk值或者我錯了嗎?如果我是正確的,我如何從其他表格中取值以確保關係正確?即login_fk和loginID有關係,並且這些ID應該與address_fk和addressID字段相同並且相同。如果我使用數據庫來插入值,那麼關係是好的,因爲我手動分配fk值來匹配loginID和addressID,所以我假設數據庫是好的,我只需要使用PHP從登錄和地址併發送給客戶表fk值?我曾在很多場合使用過數據庫,並且我曾多次使用過php和html網站,但這是我第一次嘗試創建一個動態網站,所以如果這是一個愚蠢的問題,但是希望它能教會我多一點,我會道歉而其他人在創建動態網站時可能會遇到同樣的問題。

+0

什麼是你的SQL INSERT語句訪問? –

+0

$ query =「INSERT INTO customers」。 「(姓,名,電話,電子郵件)」。 「VALUES( '$ FNAME', '$ SNAME', '$電話', '$電子郵件');」; $ result = mysqli_query($ conn,$ query)或者死(mysqli_error($ conn)); –

+0

我還會補充一點,我知道這是不是安全的SQL注入,但我想讓其餘的工作之前,移動到參數化查詢,以防止它 –

回答

1

這是所有關於主鍵,候選鍵和外鍵的概念。 在您的「customers」表中聲明的字段「login_fk」是一個子表,並且在登錄表中聲明的主鍵「loginID」是您的參考表/父表。 因此,首先,您必須將數據插入「登錄」表(父表)之後才能將數據插入「cusomers」表中。

有關主鍵和外鍵的詳細信息,你可以在 https://www.w3schools.com/sql/sql_foreignkey.asp

0

,首先插入您的登錄表登錄ID和密碼,然後在客戶運行插入查詢,以便thatvyour外鍵不失敗

相關問題