我将不会发布我的大量代码块,而只是开始我发布的内容。
我正在运行此查询:
...
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(auto)进行DESC排序,但第一个结果数组只包含23条记录,但总数组都是预期的记录。
我发现第一个结果中的“缺失”记录实际上是向前推进的,所以就好像DESC的结果只有差距。并且该数组被完全推送到最后一个结果页面。所以所有项目都被移动到它出现的一个插槽。
我不想发布我的整个代码块,因为它很多,我花了几个小时测试并尝试我的代码的变体,所以我真的认为它与SQL排序有关。
我无法看到我的DESC会导致这种奇怪现象并且ASC排序显示正常。
答案 0 :(得分:0)
终于想到了这个噩梦!
我仍然无法解释为什么会这样,但至少我现在得到了完整的预期结果。
在我的while循环中,我检查$ list [“images”]!=“”。我在recdate上使用DESC排序时结果是,有一个空白数组值,因此它的计算结果为true并从页面中“删除”该列表。所以我添加了$ list [“images”] ==“”,现在显示该数组项的图像和数据。