gpt4 book ai didi

php - 使用 PHP 在 MySQL 中删除和插入之间可能存在问题?

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

我不完全确定这是可能的,因此希望澄清是否可以,如果可以的话,前进的方向是什么(防止或如果不可能减轻)。

我有一个 PHP 脚本,允许用户提交数据(执行 INSERT INTO),另一个 PHP 脚本(不同的文件)允许删除所述数据(执行 DELETE FROM),现在假设我正在删除内容并且恰好有人同时提交了一些内容 - 这是否会导致数据被忽略(保留在该表中)?

我搜索并发现了与竞争条件相关的内容 - 不确定这是否正是上述问题的分类?

如果将上述内容放入上下文中有所帮助,则用户可以向某个主题提交回复(帖子)(这会执行 INSERT INTO forum_posts WHERE topic_id = ?),并且我可以删除该主题(希望删除所有附加的帖子),即从 forum_topics 中删除,其中 topic_id = ?然后从 forum_posts WHERE topic_id = ? 中删除,如果在删除时用户能够以某种方式发布对该主题的回复,那么这可能会导致问题(因为我们有一个没有主题的帖子!)。

希望这是有道理的。

最佳答案

这正是交易的目的。例如(伪代码)

$db->beginTransaction();

// A set of queries; if one fails, an exception should be thrown
$db->query('first query');
$db->query('second query');
$db->query('third query');

// If we arrive here, it means that no exception was thrown
// i.e. no query has failed, and we can commit the transaction
$db->commit();

当您提交时,所有 3 个事务都会同时完成,没有延迟,并且不会被其他用户删除某些内容而中断

关于php - 使用 PHP 在 MySQL 中删除和插入之间可能存在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28027806/

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