0

我需要存储一个整数数组。现在我的问题是,有一个操作已经完成了好几次,所以我想将它限制为一个查询。在 tha 查询中,我需要将一个 int 添加到数组中的某个 int 中。

它是在某个页面上花费的时间的计时器。目前它只是一个通用计数器,计算同一字段中的所有页面,所以我只需要做

UPDATE user SET active = active+$totaltime WHERE id=:id

$totaltime 是最后一次检查和然后之间的时间差。现在我想单独存储某些页面。问题是我不知道到底会有多少页。我考虑过使用serialize,但后来我需要多次执行 2 次查询,这似乎不是一个好的解决方案。

有没有其他方法可以做到这一点?

4

1 回答 1

1

您需要的是一个单独的级别表,用于跟踪与每个级别上的每个用户关联的活动时间。

让我们调用这个表userlevels,并给它以下列:

userid INT
levelid INT
active INT

主键应该是useridleveid列的组合,因为用户和级别的特定组合只能有一个条目。

然后,当您想更新用户在某个级别上花费的时间时,您可以执行以下操作:

INSERT INTO userlevels (userid,levelid,active)
VALUES (:userid,:levelid,$totaltime)
ON DUPLICATE KEY UPDATE active=active+$totaltime;

如果用户以前从未在该级别上,这将在表中创建一个新条目,或者如果已经有一个条目,则会添加到活动时间。

这是 mysql 特定的语法,但同样的事情可以通过不同的调用在其他数据库上实现。

于 2013-06-30T00:35:31.087 回答