2010-08-22 19 views
0
$data = mysql_query("SELECT * FROM phpbb_posts ORDER BY post_id DESC LIMIT 4") 
or die(mysql_error()); 

上面是我的代码,我遇到了Limit部分的问题。
当我第一次设置它,似乎一切都完美,但我可以回来了几个小时,并在页面再看看和不同数量的记录可以显示即使代码是完全相同的MYSQL限制不一致

任何想法如何解决这个问题?

+2

你是指“不同数量的记录”是什么意思?多少? 3? 5? 0? – 2010-08-22 18:07:18

+3

我们需要查看代码的其余部分。该查询将始终返回四个或更少的结果;你的问题不在这里。 – Borealid 2010-08-22 18:07:45

回答

3

数据不同,因为自上次检查页面以来发布的帖子越多。您在post_id订购,其中最高价值将是最近的帖子。

保留以前记录的最简单方法是缓存数据 - 存储它。但是,然后缓存需要知道何时刷新缓存 - 否则它永远不会改变。

如果有日期/时间列,您可以使用它来在应用LIMIT之前过滤结果。但它必须足够宽才能获得至少四条记录。与日期相同的问题需要考虑 - 在某些时候,您希望这些日期发生变化,或者页面提供的数据永远不会改变。

+0

在MySQL中不会限制总是指向返回的记录数量?为什么排序问题除了确定返回哪些记录,而不是数字? – Tahbaza 2010-08-22 18:09:14

+1

@Tahbaza:“LIMIT”与问题无关 - 问题在于数据不断变化。 LIMIT可能是4,10,100等等,问题仍然是一样的 - 每一次刷新页面,第一行与以前不一样(除非没有人在创建帖子)。 – 2010-08-22 18:13:42

+0

他指定的顺序无关紧要,结果集总是有4行。问题必须在下面几行(假设OP得到5,6,3,8个结果而不是4)。 – Ben 2010-08-22 18:14:00

0

您不指定返回多少记录与您有关。 LIMIT应该返回4条记录的最大值,如果没有至少4条记录会被您的查询返回,则返回最少值。如果你有超过4条记录返回,那么你有问题。