gpt4 book ai didi

php - 更新父行时子行消失

转载 作者:行者123 更新时间:2023-11-29 00:40:32 25 4
gpt4 key购买 nike

我有一个多部分表单,按“返回”或“下一步”将导致该部分被提交并存储到数据库 (MySQL) 中;唯一的区别是它是转到下一个还是上一个表单。

请注意,后续部分(从第二部分开始)是第一部分表的子表。他们将“ePARno”作为外键。

第一部分执行这个片段:

if( isset( $_SESSION[ 'eparno' ] ) ) { //if it's an edit, replace
$eparno = $_SESSION[ 'eparno' ];
$insert_query_0 = mysql_query ("
REPLACE INTO form
(ePARno, caseno, accomplishedby)
VALUES
('$eparno', '$caseno', '$accomplishedby')
");
}
else { //otherwise, it's a fresh insert
$insert_query_0 = mysql_query ("
INSERT INTO form
(caseno, accomplishedby)
VALUES
('$caseno', '$accomplishedby')
");
$eparno = mysql_insert_id();
}

当我返回第二个表单时,我的问题出现了,将我带到第一个表单,然后通过点击下一个返回到它。当我这样做时会发生什么情况是第二个表单的插入行被插入(通过按 Back)但是当我从第一个表单中按 Next 时它从表中消失了。 (我通过phpmyadmin查看数据库,同时按back和next,一步一步)

我怀疑这与替换父行的第一个表单有关。如果它执行 REPLACE,我怀疑已经存在的子行(例如第二种形式的子行)被删除。

我还必须说,如果我不回去,事情就会顺利进行。没有行消失。

我的怀疑有任何根据吗?如果是这样,我该如何补救?如果不是,可能是什么问题?

最佳答案

REPLACE 执行DELETEINSERT。我猜 DELETE 正在级联到子表。

改为尝试 INSERT...ON DUPLICATE KEY

“caseno”是您的主键吗?如果是这样,也许是这样的:

INSERT into form (caseno, accomplishedby) values (?,?)
ON DUPLICATE KEY UPDATE eparno = values(eparno), accomplishedby = values(accomplishedby)

关于php - 更新父行时子行消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12463706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com