我想只选择$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());
我想只选择$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());
查看结果:SELECT MySQL documentation。
你在做什么LIMIT 5, 10
是LIMIT 10 OFFSET 5
的同义词(得到10个结果从数据库返回的集合的开头跳过5个结果)。
它不是FROM和TO,它是FROM和HOWMANY。
你$to
变量实际上$length
是...
所以你告诉它以创纪录的5和10显示更多的开始。
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());
你误解如何LIMIT
作品。它预计首先是行偏移量(起始行号),然后是要返回的行数,现在是结束行数。而是使用
$from = 5;
$to = 5;
然而,这令人困惑想到第二值$to
当它的真正的行数。为了清楚起见,将其称为$numrows
。
第二个限制参数是你想要的数量。
$difference = $to- $from;
LIMIT $from, $difference
这将输出$difference
行从$from
开始。
第一个参数是偏移量,第二个参数是实际的限制值。所以如果你想跳过前5个结果并显示下10个,你需要有LIMIT 5, 10