我将不再发布我的大量代码块,而是开始执行我确定的发布。
我正在运行此查询:
...
SELECT id, Title, images, recdate, 'item' AS type
FROM ads_list
WHERE to_days(now())<= (to_days(recdate)+14)
ORDER BY recdate DESC
LIMIT $offset, $listsperpage
...
这是一个分页脚本。我的$offset只是当前记录位置的计数,$listsperpage设置为每页任意数(设置为24)。所以每页应该有24个结果。。。
一切都很好,除了当我在DESC中通过recdate排序运行查询时,第一页的数组中只有23条记录输出??
如果我使用ASC排序运行,每个页面上都有24条按预期显示的记录。
我的recdate字段的格式如下:
2012-01-14 07:10:33
2012-01-14 07:10:35
2012-01-14 07:10:38
2012-01-14 07:10:30 ...
我还尝试了按id进行DESC排序(auto),但第一个结果数组仍然只包含23条记录,但总数组都是预期的记录。
我发现第一个结果中"缺失"的记录实际上是向前推的,所以结果与DESC之间似乎只有一个间隙。该数组被完全向前推到最后一个结果页。。因此,所有项目都会移动一个位置。
我不想发布我的整个代码块,因为它太多了,我花了几个小时测试和尝试我的代码变体,所以我真的认为这与SQL排序有关。
我只是看不出我的DESC会导致这种奇怪,ASC排序显示正常。
终于解决了这个噩梦!
我仍然无法解释为什么会发生这种情况,但至少我现在得到了完全预期的结果。
在while循环中,我检查$list["images"]!="。我发现,当对recdate使用DESC排序时,有一个空数组值,所以它的计算结果为true,并将该列表从页面中"删除"。所以我添加了$list["images"]==",现在显示了该数组项的图像和数据。