我正在尝试显示结果,并显示所有结果的数量,但我需要将5个结果限制为分页。我怎么能这样做?我使用这个查询:
<?php
$q = strtolower($_GET["CONTENT"]);
$count = 0;
$Read = new Read();
$Read->FullRead("SELECT
CATEGORIES.CATEGORY_ID,
CATEGORIES.CATEGORY_COLOR,
LINKS.LINK_TITLE,
LINKS.LINK_ID,
LINKS.LINK_FRIENDLY_URL,
LINKS.LINK_CATEGORY,
LINKS.LINK_PHOTO,
LINKS.LINK_ID
FROM LINKS INNER JOIN CATEGORIES
ON
LINKS.LINK_CATEGORY = CATEGORIES.CATEGORY_ID
WHERE LINK_STATUS = 1
AND ROWNUM <= 5
AND regexp_like(LINKS.LINK_TITLE, '{$q}', 'i') ORDER BY LINK_DATE DESC");
if ($Read->getResult()):
foreach ($Read->getResult() as $LINK):
extract($LINK);
$count++;
endforeach;
endif;
echo $count;
?>
谢谢!
答案 0 :(得分:1)
在您的查询中,您只选择了五个随机行(不是字面上随机的,而是Oracle内部簿记中的前五个,而不是基于您的订购标准)。永远记住,SQL语句中的ORDER BY
子句仅在处理完所有其他子句后处理,因此ORDER BY
对ROWNUM
无效在同一个查询中。当你到达ORDER BY
时,行数已经只限于五行了。
要解决此问题,您需要在子查询中执行其他所有操作。然后从子查询中选择并在外部查询中添加WHERE ROWNUM <= 5
,而不是在子查询中。