gpt4 book ai didi

php - 当用户访问主题时放置标记 : trouble

转载 作者:行者123 更新时间:2023-11-29 14:50:29 27 4
gpt4 key购买 nike

假设我有一个论坛,其中包含用户/管理员可以访问/管理的主题。

当用户访问它时,我首先会检查主题是否存在;在我设置一个标志后,告诉系统用户是否已访问过该主题。

这将是基本代码:

1        if((isset($_GET['trackid'])) && (ctype_digit($_GET['trackid']))) {
2 $query=mysql_query("SELECT date, user, zone, artist, event, data, res, complete, notes FROM topic WHERE trackid='".$_GET['trackid']."'",$mydb);
3 if(mysql_num_rows($query)!=0) {
4 echo "Ok, The topic exist! Now I can say to the system that I have visited the topic"
5
6 if (isset($_SESSION['nickname'])) $insert=mysql_query("INSERT IGNORE INTO recent_adds (user, trackid) VALUES ('".$_SESSION['nickname']."','".$_GET['trackid']."')",$mydb);
7 }
8 }

现在,假设用户 A 到达第 4 行,同时管理员(用户 B)删除了该主题(为管理员提供了特殊功能,但是这并没有多大意义):它会向数据库插入不一致的数据。 (事实上​​这个主题将不再存在)。

做这种操作的各大论坛/系统如何摆脱这个并发问题?

最佳答案

您可以使用外键来禁止插入任何已删除的内容。然后您还可以获得级联删除的好处。

另一个解决方案是运行批处理作业来清除不一致的数据。按照此解决方案的思路,不要真正删除该主题。只需用状态标志将其标记为已删除,然后再将其删除即可。

关于php - 当用户访问主题时放置标记 : trouble,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5841024/

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