如果已更新表时间戳,如何仅选择行

时间:2013-10-23 19:30:08

标签: php jquery mysql sql ajax

目前我正在使用以下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);
?> 

3 个答案:

答案 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());

值得注意的是,如果自上次更新周期以来更新了多个配置文件,则执行此操作时,它将仅返回最近更新的行。 这是否回答了你的问题?