Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trạng thái ngoại tuyến của người dùng trực tuyến - vấn đề về trạng thái ngoại tuyến

Nếu không biết cấu trúc DB của bạn, đó là một phỏng đoán.

if ($time >= $loggedtime)

Bạn đang so sánh một chuỗi như '2012-11-01 10:10:10' với bất kỳ chuỗi nào $time nằm trong DB của bạn. Đây có vẻ là vấn đề ở đây. Bạn có thể / nên sử dụng dấu thời gian UNIX. Chúng có thể được so sánh dễ dàng.

Nếu $time là một dấu thời gian UNIX mà bạn có thể làm:

if ($time >= time()-300)

CHỈNH SỬA:

Thay đổi truy vấn của bạn để lấy dấu thời gian UNIX cho online

$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';

EDIT2: Để làm rõ hơn:Trong phiên bản đầu tiên, bạn đã so sánh hai Ngày ở dạng '2012-11-01 10:10:10'

if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')

Điều này không thể hoạt động trong PHP - nó giống như làm:

if ('apples' < 'bananas')

Bạn phải so sánh các con số. Do đó, tôi đã đề xuất sử dụng dấu thời gian unix có thể dễ dàng so sánh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO Multi-query SQLSTATE [HY000]:Lỗi chung

  2. Định dạng số thành số viết tắt

  3. Làm cách nào để lưu trữ ngày UTC ISO8601 trong cơ sở dữ liệu MySQL?

  4. MySQL FULL JOIN không hoạt động nhưng tham gia RIGHT và LEFT hoạt động

  5. Hiển thị tất cả các bảng bên trong cơ sở dữ liệu MySQL bằng PHP?