PHP 连胜或连败的的记录怎么实现

应用场情是这样
需要记录每天的连胜或连败记录。每当胜或败中断需重新清零重新计算

用的是MYSQL但是不知道怎么设计表段了。求助一下

阅读 3.6k
5 个回答

单独建表最好,比如叫winscount, 字段:id, userid, wins, time
根据这局胜利与否,查找之前的winscount记录, wins小于0是连败,大于0连胜。
胜利后最新一条winscount记录wins大于0就说明连胜,就wins+1,
失败后最新一条winscount记录wins大于0,则说明连胜中断,就创建一条wins为-1的新纪录。
失败后如果最新一条winscount记录wins小于0,就直接wins-1,如果大于0,说明连败中断,创建新winscount纪录wins=1

wins你可以拆分为两个字段都行,一个数字,一个表示胜败。
这就是个思路,可以参考,细节可以优化完善。这样设计还有个好处是,可以追溯历史记录,比如年度最高连胜,季度最高连胜什么的...
题外话,连胜我觉得不应该按天限制。

这个和每天签到是一个业务逻辑
1)一个用户id
2)一个连胜或者连败的次数
3)一个最新的状态(胜或者败)
4)时间
问题解决

可以用一个字段去记录连胜场数,一个字段去记录胜利/失败时间,然后程序首先判断如果已过了一天,则连胜场数置为0,再判断如果胜利则连胜场数+1,失败则清0;再加一个表存胜利或者失败记录即可。

应该有个用户表 用户挑战(或比赛)事件记录表 再是 记录连胜的记录表 具体字段自己思考

尝试下redis?
K(uid→标识用户)+V(bool→标识胜负)存储记录;
每次产生结果时除了更新mysql中的场次数据,redis中的值喜加一,胜场时负归零,负场反之;
然后每天结束的时候做数据持久化~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题