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