2013-03-15 203 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