MySQL Query选择了太多行

时间:2011-06-15 21:09:21

标签: php mysql

我尝试仅选择$from$to之间的差异,并按降序输出这些行。到目前为止的问题是我输入'{5}作为$from值和'10'输入$to值,但它似乎输出10而不是5。

请你告诉我我哪里出错了?

$query = mysql_query("SELECT * FROM `Posts` WHERE `isPublic` = 'yes' ORDER BY `date` DESC LIMIT $from,$to") or die(mysql_error());  

7 个答案:

答案 0 :(得分:9)

它不是FROM和TO,它是FROM和HOWMANY。

答案 1 :(得分:7)

检查出来:SELECT MySQL documentation

LIMIT 5, 10所做的是LIMIT 10 OFFSET 5的同义词(从数据库返回的集合的开头跳过5个结果得到10个结果)。

答案 2 :(得分:1)

MySQL限制的作用是,如果只提供1个值,则会限制条目数。如果提供值,则第一个是索引从哪里开始,第二个是要显示的条目数。如果您希望显示5到10之间的条目,则需要将第二个变量作为$to-$from传递,如下所示:

$query = mysql_query("SELECT * FROM `Posts` WHERE `isPublic` = 'yes' ORDER BY `date` DESC LIMIT $from,".($from-$to)) or die(mysql_error()); 

答案 3 :(得分:0)

您的$to变量实际上是$length ...

所以你要告诉它从第5项开始并再展示10项。

答案 4 :(得分:0)

你误解了LIMIT的工作原理。它首先要求行偏移(起始行号),然后是要返回的行数,现在是结束行号。而是使用

$from = 5;
$to = 5;

然而,当第二个值确实是行数时,将第二个值视为$to会让人感到困惑。为了清楚起见,请将其称为$numrows

答案 5 :(得分:0)

第二个限制参数是你想要的数量。

$difference = $to- $from;

LIMIT $from, $difference

这将从$difference开始输出$from行。

答案 6 :(得分:0)

第一个参数是偏移量,第二个参数是实际限制值。因此,如果您想跳过前5个结果并显示接下来的10个结果,则需要LIMIT 5, 10