php - MySQL 选择时间戳在 X 时间之后的条目

标签 php sql mysql

我正在尝试填充服务器时间最后 X 秒内的记录列表。

我当前的查询是..

mysql_query("SELECT player.name FROM player, spectate WHERE (player.pid = spectate.player) && spectate.bid=$bid");

当前可以检索所有条目。我的第一个想法是也选择时间字段。然后使用mktime()函数查找与当前服务器时间的时间差,只打印差值较小的记录。

但我认为包含在内会更有效 WHERE ($x > $servertime - spectate.time + 1) 以及我的其他语句。

它不起作用,因为我现在有它,我做错了什么?

带有 SELECT 的函数

function spectateJSON()
{
        $servertime = date("Y-m-d H:i:s");

        global $json, $bid;
        $specResult = mysql_query("SELECT player.name FROM player, spectate WHERE (player.pid = spectate.player) && spectate.bid=$bid && (20 > $servertime - spectate.time + 1)");
        $specResultCount=mysql_num_rows($specResult);
        $json.= '"spectate":['; 
        for($i=0; $i<$specResultCount; $i++)
        {
            $spectatorName=mysql_result($specResult,$i,"name");
            $json.='"'.$spectatorName.'"';
            if($i+1 != $specResultCount)$json.=",";
        }
        $json.=']';
}

具有 UPDATE 或 INSERT 功能

if(isset($_SESSION['char']))
{
    $charId = $_SESSION['char'];
    $bid = $_GET['bid'];
    $servertime = date("Y-m-d H:i:s");

    $specResult = mysql_query("SELECT player FROM spectate WHERE player='$charId'");
    $specResultCount=mysql_num_rows($specResult);

    if($specResultCount > 0)
    {
        $Query=("UPDATE spectate SET bid='$bid' time='$servertime' WHERE player='$charId'");
        mysql_query($Query);
    }
    else
    {
        mysql_query("INSERT INTO spectate (bid, player, time) VALUES ('$bid','$charId','$servertime')");
    }
}

感谢您的帮助,也欢迎任何其他建议/批评=)


更新:

观察表条目示例。
出价:169
玩家:1
时间:2009-10-20 21:22:54

玩家表条目示例:
进程号:1
uid: 1
姓名:斯派克艾
得分:2000
胜利:0
损失:0
平局:0

最佳答案

这应该在最后一分钟内抓取行:

SELECT

time

FROM

games

WHERE

`time` > DATE_SUB( NOW(), INTERVAL 1 MINUTE )

timestamp 列类型上似乎对我有用。我认为您不一定需要在 PHP 中生成时间,因为假设它位于同一服务器上,它应该与 MySQL 中的时间相同。

编辑:这个更紧凑......

SELECT * FROM games

WHERE

time > now() - INTERVAL 1 MINUTE

关于php - MySQL 选择时间戳在 X 时间之后的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605033/

相关文章:

php - Ubuntu symfony错误:Could not perform XLST transformation

javascript - 如何为自动登录 Cacti 多次发布 PHP 表单 onload?

mysql - 这在单个 mysql 查询中可能吗?

mysql - 如何获取每个用户最新的loginevent记录?

javascript - 如何使用 Dropzonejs 限制视频的持续时间?

php - Codeigniter PHP - 重定向在真实服务器上给出内部服务器错误

MySQL - 使用 LEFT OUTER JOIN 和 WHERE 子句选择记录

mysql - 按期间分组结果

sql - mysql - 通过 1 个查询从 2 个表获取详细信息

c# - Mysql存储网站管理员权限