2
我正在尝试在服务器时间的最后X秒内填充记录列表。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.=']';
}
与更新功能或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秒
播放器表条目例如:
PID:1
UID:1
名称:SpikeAi
成绩:2000
胜:0
输:0
领带:0
你能给与推测时间或完全生成的SQL语句的样本行条目? – 2009-10-22 04:38:47
好吧,我更新后显示与示例数据依赖表字段。 – 2009-10-22 04:48:18