所以我有2个查询,我正在尝试在php中执行。但是我收到了一个错误。第一个查询中的第一个id是auto inc,第二个查询中的第二个id不是auto inc,但是它通过外键连接到第一个id。我想在查询执行时为它们捕获相同的id。但是会弹出这个错误。
#1452 - 无法添加或更新子行:外键约束失败(
eangele
。relationships
,CONSTRAINTrelationships_ibfk_3
FOREIGN KEY(id
)REFERENCESnodes
(id
)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);
答案 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(), ?, ''
您的查询很容易被注入。你应该参数化它们。