2011-06-15 93 views
4

我想只选择$from$to之间的差异,并使这些行以降序输出。到目前为止的问题是,我输入'5'作为$from的值,'10'输入$to的值,但它似乎输出10而不是5.MySQL查询选择太多行

请你能告诉我我要去哪里错误?

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

回答

7

查看结果:SELECT MySQL documentation

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

9

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

0

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

所以你告诉它以创纪录的5和10显示更多的开始。

1

MySQL的限制工作,如果你只提供一个值,它限制了条目的数量。如果您提供值,第一个是要从哪里开始,第二个是要显示的条目数。如果你希望显示的条目从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()); 
0

你误解如何LIMIT作品。它预计首先是行偏移量(起始行号),然后是要返回的行数,现在是结束行数。而是使用

$from = 5; 
$to = 5; 

然而,这令人困惑想到第二值$to当它的真正的行数。为了清楚起见,将其称为$numrows

0

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

$difference = $to- $from; 

LIMIT $from, $difference 

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

0

第一个参数是偏移量,第二个参数是实际的限制值。所以如果你想跳过前5个结果并显示下10个,你需要有LIMIT 5, 10