-1

我想显示系统中的活跃用户。

然后每 5 分钟创建一个函数,用当前日期更新数据库。

最后我必须删除日期小于当前日期+ 10分钟的记录

DELETE FROM `user_online` WHERE data < (NOW() + INTERVAL 10 MINUTE)

<?php
  @session_start();
  $session = session_id();
  $time = date('Y-m-d h:i:s');

  $tbl_name = "user_online"; // Table name

  $result = mysql_query("SELECT * FROM $tbl_name WHERE session='$session'");

  $count=mysql_num_rows($result);

  if($count == 0){

    mysql_query("INSERT INTO $tbl_name(session, data) VALUES ('$session', '$time')");

  }else { 

    mysql_query("UPDATE $tbl_name SET data='$time' WHERE session = '$session'");

  }

// if over 10 minute, delete session

$result4 = mysql_query("DELETE FROM $tbl_name WHERE data < (NOW() + INTERVAL 10 MINUTE)");
// Open multiple browser page for result

Javascript:

<script type="text/javascript" >
  function update(){
    <?php include('online.php'); ?>
  }
  setInterval("update()",10000);
</script>

脚本正在删除所有记录,怎么了?

4

2 回答 2

3

错误的标志

DELETE FROM `user_online` WHERE data < (NOW() - INTERVAL 10 MINUTE)

NOW() + INTERVAL 10 MINUTE从现在起十分钟后,你所有的记录都比那更旧。

于 2013-09-21T22:57:46.007 回答
0

您正在将一条记录放入数据库,然后告诉它:“从现在开始删除不到 10 分钟的所有内容”......但是您刚刚输入的内容符合该标准。如果我在 12:20 输入记录,那么它是 <12:30 并且将被删除。

于 2013-09-21T23:04:35.453 回答