1

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

#1452 - 无法添加或更新子行:外键约束失败(eangele. relationships, CONSTRAINT relationships_ibfk_3 FOREIGN KEY ( id) REFERENCES nodes( id) ON DELETE NO ACTION ON 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);
4

1 回答 1

2

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

如果这不起作用,您可以使用与您正在使用的 MySQL API 对应的 php 函数来获取最后一个插入 ID。我也只看到它与SELECT. 我认为它会VALUES像那样工作,但如果不是,你总是可以做一个插入/选择:

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

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

于 2013-03-15T03:37:33.650 回答