ThinkPHP之唯一建冲突数据自增

功能:统计当日登陆玩家数

要求:一名用户当日多次登陆只算一次

解析:

用户表新增字段loginTime int(10) not null

新增统计表:

CREATE TABLE `mnlm_nums` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `cname` varchar(10) NOT NULL DEFAULT '' COMMENT '统计名称year month day',
  `nums` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '统计数',
  `dates` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '统计日期',
  PRIMARY KEY (`id`),
  UNIQUE KEY `cname` (`cname`,`dates`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

用户登陆 读取loginTime获得上次登陆时间戳

声明变量$day = strtotime(date('Y-m-d')) 获得当日零点时间戳

判断loginTime是否小于$day

如果小于则表示今天新登陆用户则字段nums自增1

一、 mysql直接写就是 insert....ON DUPLICATE KEY UPDATE `nums`=(nums+1)

二、由于用的是ThinkPhp框架,寻找手册是否有类似方法,手册没有详细描述,查看源码,主要设计两个文件:

1. thinkphp/library/db/driver.class.php   insert()方法

2. thinkphp/library/db/driver/mysql.class.php parseDuplicate()方法

得出结论

  add($data,array(),array('nums'=>array('exp','nums+1')));

最后更新用户的loginTime完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值