PHP每日奖金

时间:2013-05-23 19:48:59

标签: php sql date

我需要编制每日奖金制度。 用户必须能够每天收到一次奖金。 我编写了类似的东西:

function checkDailyBonus($user, $type) {
    global $ado;
    $last_day = strtotime(date("Y:m:d 00:00:00"));

    $query = $ado->exec("SELECT * FROM claimed_bonuses WHERE `user` = '$user' and `type` = '$type' ORDER BY `id` DESC");
    $row = mysql_fetch_assoc($query);
    $date = strtotime($row['date']);
    if ($ado->count($query) < 1) {
        return 1;
    } else {
        if ($last_day < $date) {
            return 0;
        } else {
            return 1;
        }
    }
}

但是它返回了错误的结果:即使今天更高,最后一个声明奖励脚本返回0,但它应该返回1。最后一个索赔日期是2013-05-19 23:05:41。提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

嗯,为什么不呢。

SELECT ..
FROM claimed_bonuses
WHERE DATE(lastbonus) < CURDATE()

对于所有这些strtotime调用并且在PHP中过滤整个用户表是没有意义的,因为当MySQL可以直接在查询中更简单地执行它时...

答案 1 :(得分:0)

在不知道您的数据库结构的情况下,我无法为您编写此内容,但我建议您在查询中执行以下操作:

当天:

SELECT * FROM claimed_bonuses
WHERE `user` = '$user' and `type` = '$type'
AND date_format(`date`, '%Y%b%e') = date_format(now(), '%Y%b%e')

然后检查它是否返回了一行。