插入LAST_INSERT_ID问题

时间:2013-03-15 03:35:50

标签: php mysql

所以我有2个查询,我正在尝试在php中执行。但是我收到了一个错误。第一个查询中的第一个id是auto inc,第二个查询中的第二个id不是auto inc,但是它通过外键连接到第一个id。我想在查询执行时为它们捕获相同的id。但是会弹出这个错误。

  

#1452 - 无法添加或更新子行:外键约束失败(eangelerelationships,CONSTRAINT relationships_ibfk_3   FOREIGN KEY(id)REFERENCES nodesid)ON DELETE NO ACTION ON   更新无行动)

$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);

1 个答案:

答案 0 :(得分:2)

'LAST_INSERT_ID()'是一个文字字符串。你想在没有撇号的情况下使用它只是values(LAST_INSERT_ID(),

如果不起作用,您可以使用与您使用的MySQL API相对应的php函数来获取最后一个插入ID。我也只看到它与SELECT一起使用。我认为它可以与VALUES类似,但如果没有,你可以随时进行插入/选择:

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

您的查询很容易被注入。你应该参数化它们。