0

这个脚本总是返回一个,而不是实际的在线用户数。任何人都可以帮助修复我的代码吗?

$oq = "SELECT user FROM user_archive WHERE time > (NOW() - INTERVAL 5 MINUTE)";
$oresult = mysqli_query($con,$oq);
$online_users = mysqli_num_rows($oresult);

if($online_users = 1)
{
     echo "{$online_users} user online";    
}

if($online_users != 1)
{
echo "{$online_users} users online";    
}
4

4 回答 4

1

您需要使用==而不是=

if($online_users == 1)
{
     echo "{$online_users} user online";    
}
于 2013-07-23T23:19:37.477 回答
1

在您编写的代码行中:

如果($online_users = 1)

您将值 1 分配给 $online_users,而不是比较该值。它应该是:

如果($在线用户 == 1)

于 2013-07-23T23:21:32.073 回答
1

使用一个等号是一种叫做assignment operatorso 的东西:

$Var = 1; // This variable equals to 1

但是在验证时。

if ($Var == 1){

} // Notice the use of two equals, for a comparison operator

http://php.net/manual/en/language.operators.comparison.php

于 2013-07-23T23:26:48.253 回答
0

$online_users = 1必须是$online_users == 1

$oq = "SELECT COUNT(*) FROM user_archive WHERE time > (NOW() - INTERVAL 5 MINUTE)";

或者

$oq = "SELECT COUNT(DISTINCT user) FROM user_archive WHERE time > (NOW() - INTERVAL 5 MINUTE)";

COUNT(*)重要,而不是你做什么。

rows of data当您可以只取回一个integer并让 MySql 为您计数时,为什么要检索来计数它们?

于 2013-07-23T23:19:36.200 回答