2017-01-09 57 views
0

我在users表中有last_activity_time列,我想選擇last_activity_time在最近5分鐘內的用戶。在這方面,我需要列last_activity_time轉換爲UNIX_TIMESTAMP格式,這樣我就可以用當前日期和時間strtotime(date("Y-m-d h:i:s"))如何取回在線用戶-MYSQL

我試過SQL來選擇比較,但它觸發未知列last_activity的錯誤。

這是真的,我沒有像在表中的列,但我創建的別名

有什麼不對我的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

嘗試將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'))." 
     "; 
+0

或者,是符合ANSI,只是重複'UNIX_TIMESTAMP(...)的'WHERE'子句中'。 –

+0

謝謝。它爲我工作...我想我需要了解SQL條款HAVING –

+0

請幫助...我如何計算SQL或PHP 5分鐘,我應該這樣做:strtotime(「5分鐘」)..因爲+ 5無法正常工作,因爲我預計 –

相關問題