帮助PHP脚本

时间:2011-08-11 22:53:06

标签: php foreach

我正在尝试为公告板脚本创建自定义奖牌/奖励系统。

我遇到问题的部分是每10分钟运行一次的任务,以检查有资格获得奖牌的用户。

这是我目前的代码:

// select all medals from database
$query = $db->simple_select("medals", "*", "");
$medals = $db->fetch_array($query);

// select users
$query_users = $db->simple_select("users", "*", "");
$results = $db->fetch_array($query_users);

foreach($medals as $medal)
{
    foreach($results as $result)
    {
        if($result['postnum'] >= $medal['postnum'])
        {
            $insert = array( 
                "mid" => $medals['id'],
                "muid" => $result['uid'],
                "mtime" => TIME_NOW,
            ); 

            $db->insert_query("users_medals", $insert);                 
        }
    }
}

上述代码的目的是查询medals表,其中包含所有有资格被用户“赢得”的奖牌。 users表非常自我解释 - 它拥有论坛板的用户。当用户满足奖牌的要求时,奖牌将被插入user_medals表中,其中包含奖牌ID,用户ID和奖牌获奖时间。

但是,每次运行任务时,它都会插入超过30行(我使用的测试板只有两个用户,所以它应该只插入1行,因为只有1个用户满足了奖牌的要求对于至少有2个帖子的用户。)

有人可以帮我这个吗?

感谢。

1 个答案:

答案 0 :(得分:1)

问题在于:

if($result['postnum'] >= $medal['postnum'])

使用每个循环输出$result['postnum']$medal['postnum']的值以检查其值。您会发现第一个值始终大于或等于第二个值,因此循环始终执行。