拿表:
######################################
# id # content # timestamp #
######################################
# 1 # something # YY-MM-DD 12:00:00 #
# 2 # something # YY-MM-DD 11:59:00 #
# 3 # something # YY-MM-DD 11:58:00 #
# 4 # something # YY-MM-DD 11:57:00 #
######################################
现在,如果您执行一个查询,返回所有时间戳 < NOW() 的行,现在是YY-MM-DD 12:01:00
,您将只返回表中的 4 个结果。您可以使用 limit 来设置要检索的最大行数,但它只会限制匹配限制为 <NOW() 的行。
当用户查看上一个查询返回的行列表时,更多的行被添加到表中
######################################
# id # content # timestamp #
######################################
# 5 # something # YY-MM-DD 12:00:02 #
# 6 # something # YY-MM-DD 12:00:03 #
######################################
由于在运行前一个查询时这些行不存在,因此查询无法返回。即使它们确实存在, NOW() 在运行时也会转换为时间戳,YY-MM-DD 12:01:00
因此实际上之前的查询正在返回时间戳 < 的所有行YY-MM-DD 12:01:00
。由于新行具有时间戳 >,YY-MM-DD 12:01:00
因此它们不会被返回。
为了返回这些新行,您必须再次执行查询,除非您刷新使用 AJAX 或 JQUERY 的页面,否则将无法完成。简而言之,您的查询可以而且只会返回表中已经存在的行列表。它不能返回在查询运行后添加的那些。