Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何根据条件执行更新或删除查询?_Php_Mysql_Mysqli - Fatal编程技术网

Php 如何根据条件执行更新或删除查询?

Php 如何根据条件执行更新或删除查询?,php,mysql,mysqli,Php,Mysql,Mysqli,因此,当用户在我的网站上联机时,如果他们处于非活动状态超过15分钟,我希望将他们的状态设置为空闲,由数据库中“online”表中的一列表示,如果他们处于非活动状态超过30分钟,我希望完全删除该行,而不是更新列 有没有一种方法可以在一个查询中实现这一点?谢谢。在一个查询中执行此操作的唯一方法是在表上设置触发器,以便在更新时删除超过非活动删除阈值(30分钟)的任何行 但是,这最终只是两个查询——只是DB在执行一个查询之后执行一个查询 不要害怕多个查询,它们非常快 为什么要删除用户?这是注册用户还是仅

因此,当用户在我的网站上联机时,如果他们处于非活动状态超过15分钟,我希望将他们的状态设置为空闲,由数据库中“online”表中的一列表示,如果他们处于非活动状态超过30分钟,我希望完全删除该行,而不是更新列


有没有一种方法可以在一个查询中实现这一点?谢谢。

在一个查询中执行此操作的唯一方法是在表上设置触发器,以便在更新时删除超过非活动删除阈值(30分钟)的任何行

但是,这最终只是两个查询——只是DB在执行一个查询之后执行一个查询


不要害怕多个查询,它们非常快

为什么要删除用户?这是注册用户还是仅来宾?他们是注册用户,我正在删除“online”表中的行,而不是“users”表中的行。当用户登录时,行被放入联机表中。为什么您有联机表?将datetime字段放在用户表中,并将其命名为“last_active”。在每个用户操作上更新此时间字段。如果时间超过15分钟,用户处于空闲状态,如果时间超过30分钟,用户不在这里。@glavić我可以想象很多情况下,除了基本/永久的“用户”表之外,您可能还需要一个“在线用户”表。@glavić-如果他有一个非常大的用户表,但在线用户数量要少得多,或者,如果他想把客人添加到列表中,等等。在很多情况下,有一张单独的桌子是很方便的。所有这些都是关于尽可能少的处理开销、前瞻性规划和未来的db设计。