0

我正在尝试编写一个 PHP 脚本来计算过去 10 分钟内访问过该页面的用户数量。这是我现在的脚本:

function getOnlineUsers($database, $main_connection){

    $database;

    $visitor_id = session_id();

    $timestamp = time();
    $timeOut = $timestamp - 6000;

    mysql_query("INSERT INTO online (m_time, ip) VALUES ('$timestamp', '$visitor_id')", $main_connection);
    mysql_query("DELETE FROM online WHERE m_time < $timeOut");

    $result = mysql_query("SELECT * FROM online");
    mysql_fetch_assoc($result);
    if(!$result){
        $online_users = 1;
    }else{
        $online_users = mysql_num_rows($result);
    }

    return $online_users+1;
}

问题是没有任何东西被插入到数据库中并且数据库保持为空,因此计数为空。有人可以帮助我吗?

4

3 回答 3

2

首先,最好使用 PDO 或 MySQLi。在您的数据库中,“m_time”列必须是整数类型,并将$timestamp值作为数字传递,而不是在引号内。

"INSERT INTO online (m_time, ip) VALUES ($timestamp, '$visitor_id')"
于 2013-09-22T09:18:06.283 回答
1

1)将'$timestamp'改为NOW(),mysql无法理解php的time()函数(假设m_time是一个日期时间字段)。

IE:

INSERT INTO online (m_time, ip) 
 VALUES ( NOW(), '$visitor_id')

2)您的删除遇到同样的问题

3)您可以使用更聪明的方法在最后 10 分钟内吸引用户,尝试类似:

select count(*) AS OnlineUserCount 
 from online 
WHERE 
 m_time > DATE_SUB( NOW(), INTERVAL 10 MINUTE ) ;
于 2013-09-22T09:18:38.573 回答
-1

您的代码看起来不错..我建议您做的是在查询运行时回显查询并处理并粘贴它并直接从 phpmyadmin 运行它并检查它是否给您任何错误以及该行是否成功插入我建议您检查您的与数据库的连接文件。

并尝试 CoursesWeb 的建议

于 2013-09-22T09:20:15.883 回答