我开发了一个推荐系统,登录的会员可以将推荐发送给那里的家人/朋友,以推荐他们注册。
一切正常,但昨天决定我将限制某人在 24 小时内可以发送的最大推荐。我将其限制为每天最多 3 次推荐。
我在下面发布了一些我似乎遇到问题的代码。我遇到的问题是,无论看起来如何,我都会收到一条错误消息,说我已经达到了今天的最大推荐次数。我不确定我在代码中做错了什么。
// referral query
$referral_limit = mysql_query("SELECT 'created_on' FROM 'user_referrals'
WHERE `referrer_uid` = $referrer_uid ") or die(mysql_error());
if(mysql_num_rows($referral_limit) > 0){
while($row = mysql_fetch_assoc($referral_limit)){
$db_time = $row['created_on'];
if((time() - $db_time) > 86400){
// is within 24 hours and has reached maximum daily referral allowance
$error[] = "You have reached the maximum referrals for today.";
}
}
}
我确实尝试过回显 $db_time ,当我执行所有操作时,我得到的只是created_on的字段名称,而不是在这种情况下应该显示时间戳的实际值。数据库中的created_on字段包含进行推荐的时间戳,我检查它以确保推荐用户在过去 24 小时内没有进行推荐。
您还会注意到我没有添加将其限制为每天 3 个的额外位,但我不想添加该位,直到我可以先解决此问题。
数据库表如下所示:
CREATE TABLE IF NOT EXISTS `user_referrals` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`referrer_uid` int(11) NOT NULL,
`recipient_username` varchar(15) NOT NULL,
`referrer_email` varchar(254) DEFAULT NULL,
`referred_id` char(32) NOT NULL,
`referred_email` varchar(254) NOT NULL,
`status` char(9) NOT NULL,
`created_on` int(11) NOT NULL,
`updated_on` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `referred_id` (`referred_id`),
KEY `referrer_uid` (`referrer_uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=72 ;
编辑
经过一些帮助,这是我的代码。它仍然说在过去 24 小时内进行了推荐,即使没有。
我想我做错了错误检查。
$referral_limit = mysql_query("
SELECT COUNT(*)
FROM `user_referrals`
WHERE `referrer_uid` = $referrer_uid
AND `created_on` > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY))") or die(mysql_error());
if($referral_limit > 0) {
$error[] = "You have reached the maximum referrals for today.";
}