如何获取在线用户-MYSQL

时间:2017-01-09 03:07:18

标签: mysql

我的last_activity_time表格中有一列users,我想选择last_activity_time在过去5分钟内的用户。在这方面,我需要将列last_activity_time转换为UNIX_TIMESTAMP格式,以便我可以将其与当前日期和时间进行比较strtotime(date("Y-m-d h:i:s"))

我尝试使用SQL来选择它,但它会触发未知列last_activity的错误。

确实我在表格中没有这样的列,但我使用as alias

创建了该列

我的SQL有什么问题,如何解决?

$sql    = "SELECT  id,firstname,
                lastname,
                UNIX_TIMESTAMP(last_activity_time) AS last_activity 
                FROM $main_table WHERE 
                (last_activity + 5) > ".strtotime(date('Y-m-d h:i:s'))."

                ";  
$query  =   mysqli_query($conn,$sql);
die(mysqli_error($conn));

谢谢。

1 个答案:

答案 0 :(得分:1)

尝试将WHERE更改为HAVING,因为在mysql中您无法在WHERE语句中使用列别名。

$sql = "SELECT
            id,
            firstname,
            lastname,
            UNIX_TIMESTAMP(last_activity_time) AS last_activity 
        FROM $main_table
        HAVING (last_activity + 5) > ".strtotime(date('Y-m-d h:i:s'))."
       ";

或者您可以在WHERE中使用完整功能列:

$sql = "SELECT
            id,
            firstname,
            lastname,
            UNIX_TIMESTAMP(last_activity_time) AS last_activity 
        FROM $main_table
        WHERE (UNIX_TIMESTAMP(last_activity_time) + 5) > ".strtotime(date('Y-m-d h:i:s'))."
       ";