Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检索多个元素的第n组_Php_Sql_Mysqli - Fatal编程技术网

Php 如何检索多个元素的第n组

Php 如何检索多个元素的第n组,php,sql,mysqli,Php,Sql,Mysqli,我发现,要从数据库$x中选择数量有限的元素,我可以使用 $sql="SELECT * FROM user ORDER BY id LIMIT $x"; 因此,如果$x=10,此查询将从数据库中检索前10个元素 但是如何检索第n个$x元素呢 例如,如果$n=5和$x=20我想检索20个元素,以便这20个元素是数据库中的第5个20元素,例如,这个示例是数据库中80-100的元素,不管它们的ID是什么 我该怎么做? $m = $n-1; $start = $m*$x; $s

我发现,要从数据库
$x
中选择数量有限的元素,我可以使用

$sql="SELECT * FROM user ORDER BY id LIMIT $x";
因此,如果$x=10,此查询将从数据库中检索前10个元素

但是如何检索第n个
$x
元素呢

例如,如果
$n=5
$x=20
我想检索20个元素,以便这20个元素是数据库中的第5个20元素,例如,这个示例是数据库中80-100的元素,不管它们的ID是什么

我该怎么做?


$m = $n-1;

$start = $m*$x;

$sql="SELECT * FROM user ORDER BY id LIMIT $start, $x";

假设我们希望从一个名为“订单”的表中选择1-30(含)的所有记录。SQL查询将如下所示:

$sql = "SELECT * FROM Orders LIMIT 30";
当运行上面的SQL查询时,它将返回前30条记录

如果我们想选择记录16-25(含),该怎么办

Mysql还提供了一种处理方法:使用偏移量

下面的SQL查询表示“仅返回10条记录,从记录16开始(偏移量15)”:

您还可以使用较短的语法来实现相同的结果:

$sql = "SELECT * FROM Orders LIMIT 15, 10";
请注意,使用逗号时,数字是颠倒的。

参考:

限制的第二个参数表示结果的数量,而不是偏移量。
$sql = "SELECT * FROM Orders LIMIT 30";
$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";
$sql = "SELECT * FROM Orders LIMIT 15, 10";