我需要存储一组int。现在我的问题是,有一个操作已经完成了很多次,所以我想将它限制为一个查询。在tha查询中,我需要从数组中的某个int添加一个int。
这是在特定页面上花费的时间的计时器。目前它只是一个通用计数器,它计算同一领域中的所有页面,所以我只需要做
UPDATE user SET active = active+$totaltime WHERE id=:id
$ totaltime是上次检查之间的时差。现在我想单独存储某些页面。问题是我不确切知道会有多少页面。我考虑过使用serialize,但后来我需要多次进行2次查询,这似乎不是一个好的解决方案。
还有其他方法吗?
答案 0 :(得分:1)
您需要的是一个单独的级别表,用于跟踪每个级别上与每个用户相关的活动时间。
让我们调用此表 userlevels ,并为其提供以下列:
userid INT
levelid INT
active INT
主键应该是 userid 和 leveid 列的组合,因为用户和级别的特定组合只能有一个条目。
然后,当您想要更新用户在特定级别上花费的时间时,您会执行以下操作:
INSERT INTO userlevels (userid,levelid,active)
VALUES (:userid,:levelid,$totaltime)
ON DUPLICATE KEY UPDATE active=active+$totaltime;
如果用户以前从未在该级别上,则会在表中创建一个新条目,如果已有条目,则会在活动时间内添加。
这是特定于mysql的语法,但在具有不同调用的其他数据库上可以实现相同的功能。