目前我正在使用以下php块选择最新的行,我有一个ajax循环,每隔几秒运行一次这个php块来返回feed。我想在最新的时间戳没有改变时向ajax回显假,以便ajax不会重复结果并用相同的内容填充我的Div(#feed)。
<?php
require_once 'db_conx.php';
$Result = mysql_query("SELECT * FROM profiles ORDER BY lastupdated desc limit 1") or die (mysql_error());
while($row = mysql_fetch_array($Result)){
echo $row['name'];
}
mysql_close($con);
?>
答案 0 :(得分:2)
在会话中的某个位置或请求者中,您需要存储上次获取的时间。最好将它存储为会话变量(我认为这是特定于客户端的,因为不同的客户端将在不同的时间加载)然后获取其lastupdated
时间大于{{1}的所有记录时间。
每次从数据库中提取条目,只需将last_fetched
变量更新为当前时间戳。
答案 1 :(得分:1)
如果你每5秒运行一次,我会做类似的事情
$Result = mysql_query("SELECT * FROM profiles WHERE lastupdated > ADDTIME( NOW( ) , '-00:00:05.00000' ) ORDER BY lastupdated desc limit 1") or die (mysql_error());
$num_rows = mysql_num_rows($result);
if ($num_rows = 0) {
return false;
} else {
return true;
}
这将为您提供在过去5秒内已更新的所有行,如果它超过此值,则它应该在上次运行中被拾取。
希望这有帮助
答案 2 :(得分:0)
当您从服务器检索结果时,我猜您将最后一个查询的时间戳存储在某个PHP变量中,以便比较下一个查询的返回结果。 我将时间戳连接到您的查询作为where子句,因此您的SQL查询将变为类似
$Result = mysql_query("SELECT * FROM profiles WHERE lastupdated > " . $timestamp . " ORDER BY lastupdated desc limit 1") or die (mysql_error());
值得注意的是,如果自上次更新周期以来更新了多个配置文件,则执行此操作时,它将仅返回最近更新的行。 这是否回答了你的问题?