Я разработал систему рефералов, в которой зарегистрированные пользователи могут отправлять рефералов туда, где есть семья / друзья, чтобы рекомендовать им зарегистрироваться.
Все работает отлично, но вчера решил, что я бы ограничил максимальное количество рефералов, которые кто-либо мог отправить в течение 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, и когда я сделаю все, все, что я получаю, - это имя поля, create_on , а не фактическое значение, которое в этом случае должно отображать метку времени. Поле create_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.";
}