2013-07-19 23 views
-2

我有一個名爲「project_beta」的數據庫,其中包含以下表:offre,categorieOffre和fournisseur。php/mysql:無法添加或更新子行

-fournisseur (idFournisseur, nomFournisseur) 
-offre (idOffre, nomOffre, #idFournisseur, #idCatOffre) 
-categorie_offre (idCatOffre, nomCatOffre, #idOffre); 

當我做

INSERT INTO offre VALUES ('','".$nomOffre."','".$idFournisseur."','"idCatOffre"') 

它會顯示這個錯誤:

Cannot add or update a child row: a foreign key constraint fails (project_beta . offre , CONSTRAINT offre_ibfk_4 FOREIGN KEY (idCatOffre) REFERENCES categorie_offre (idCatOffre)).

我怎樣才能解決呢?

+1

你可能在'$ idCatOffre'缺少'$'? – deceze

+0

或idcatoffre不在類別表中。 – dmaij

+0

你btw與外鍵有問題。刪除類別表中的外鍵指向offre表(idoffre) – dmaij

回答

0

我看到了幾件奇怪的事情。

  • 您正在idOffre字段中插入一個空值。對於身份證來說,這是一個非常奇怪的值。通常我會希望這個ID是由數據庫自動生成的,你不應該在那裏插入任何東西。
  • 對於第四個字段,您保留文本模式但不使用拼接。
  • 我會建議再次使用#開始變量的名稱。此外,你不再使用該角色。
  • 在雙引號內的PHP變量替換,所以你不必來連接
  • 我希望#idFournisseur和#idCatOffre是數字太大,所以他們的價值不應該是單一的INSERT語句中引用。

還要確保無論您用於#idFournisseur和#idCatOffre這些值的值應該預先存在於相關表中。

只是胡亂猜測......你不應該做這樣的事情

$query = "insert into offre(nomOffre, idFournisseur, idCatOffre) values ($nomOffre,$idFournisseur,$idCatOffre)"; 
+0

要清除$ nomOffre我從公式中獲得它。我完成了你所展示的內容,但我得到了:你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以找到正確的語法,用於在第1行 – user2567806

+0

Typo在我身邊:$ nomOffre附近的單引號不應該在那裏。我編輯了我的答案。 – Roebie

+0

我得到了解決方案,我已經做了一個更新SQL請求後插入SQL請求。謝謝你的每一個。 – user2567806

0

有一個外鍵約束來確保數據完整性得以保留。如果此約束失敗,則是因爲您嘗試使用categorie_offre表中未包含的類別標識。

相關問題