2013-03-15 200 views
1

所以我有2個查詢,我試圖在php中執行。但是我得到一個錯誤。第一個查詢中的第一個id是auto inc,第二個查詢中的第二個id isnt auto inc,但它通過外鍵連接到第一個查詢。我想在查詢執行時爲它們捕獲相同的ID。然而這個錯誤彈出。插入LAST_INSERT_ID問題

#1452 - 不能添加或更新子行,外鍵約束失敗(eangelerelationships,約束relationships_ibfk_3 外鍵(id)參考文獻nodesid)ON DELETE NO行動 UPDATE NO ACTION)

$query = "insert into nodes(id,name,color,type,thumb)". 
"values('','$nodename','#EBB056','star','$thumbFile')"; 
$result = $db -> Execute($query); 
$querytwo = "insert into relationships(id,goingto,data)". 
"values(LAST_INSERT_ID(),'$category','')"; 
$resulttwo = $db -> Execute($querytwo); 

回答

2

'LAST_INSERT_ID()'是一個字符串。你想使用它沒有撇號只是values(LAST_INSERT_ID(),

如果不起作用,您可以使用與正在使用的MySQL API對應的php函數獲取最後一個插入ID。我也只看到它與SELECT一起使用。我認爲它會與VALUES這樣的工作,但如果它不,你總是可以做插入/選擇:

INSERT INTO relationships(id, goingto, data) 
SELECT LAST_INSERT_ID(), ?, '' 

你的查詢很容易受到注射。你應該參數化它們。

+0

嘗試過有和沒有,它仍然給我同樣的錯誤 – user1902588 2013-03-15 03:38:25

+1

@ user1902588你確定第一次插入成功嗎? – 2013-03-15 03:39:36

+0

是的,第一個很好,但是我失去了第二個ID。我只想爲 – user1902588 2013-03-15 03:42:11