我正在尝试编写一个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;
}
问题是没有任何内容插入数据库,数据库仍为空,因此计数为空。有人可以帮助我吗?
答案 0 :(得分:2)
首先,更好地使用PDO或MySQLi。在您的数据库中,'m_time'列必须是整数类型,并将$timestamp
值作为数字传递,而不是在引号内传递。
"INSERT INTO online (m_time, ip) VALUES ($timestamp, '$visitor_id')"
答案 1 :(得分:1)
1)将'$ timestamp'更改为NOW(),mysql无法理解php的time()函数(假设m_time是一个datetime字段)。
即:
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 ) ;
答案 2 :(得分:-1)
你的代码看起来很好..我建议你做的是在运行时回显查询并应对并粘贴它并直接从phpmyadmin运行它并检查它是否给你任何错误,如果成功插入行我建议你用数据库检查你的连接文件。
并尝试CoursesWeb
的建议