0

如果标题令人困惑,我深表歉意,很难为这个问题命名。

我一直想知道如何从 MySQL 中检索数据,但只检索跳过按 id 排序的前 4 个输出的数据。

前任:

function firstFour()
{
    $sth = $this->db->prepare("SELECT data FROM table WHERE category = 'Sports'
    ORDER BY id LIMIT 4");
    $sth->execute();

    $row = $sth->fetch();
    return $row;
}

然后在第二个查询中,跳过上面 firstFour 查询中按 id 排序的前四个,并从运动类别中输出其余数据。

4

4 回答 4

3

使用此查询,您的限制 4 使其从第 0 行开始并检索到第 4 行,将限制设置为 4,xxxx 将从 4 变为 xxxx 的任何值。我用大数代替 xxxx

"SELECT data FROM table WHERE category = 'Sports'
 ORDER BY id LIMIT 4, 99999999999"
于 2013-11-07T17:15:21.070 回答
3

你需要像下面这样设置限制 LIMIT 4 , 4

限制 8 , 4


很快

于 2013-11-07T17:15:24.803 回答
0

为了扩展 Zahidul 的答案并使您的生活更轻松,您可能希望稍微概括一下您的功能 - 使用firstFour(),secondFour()等将使您的生活变得更加艰难。我建议采用 Zahidul 的想法并传入您的限制变量:

function anyFour($lowLimit)
{
    $sth = $this->db->prepare("SELECT data FROM table WHERE category = 'Sports'
    ORDER BY id LIMIT $lowLimit, 4");
    $sth->execute();

    $row = $sth->fetch();
    return $row;
}

然后,如果您想保留该功能firstFour(),它将是:

function firstFour()
{
    return anyFour(0);
}

从那里,您可以创建一个以 4 为增量的简单循环。

for ($x = 0; $x < 999;$x++) // 999 should be the total number of sets you want to return...
{
    // on each loop, $myRows returns the next 4 rows:
    $lowLimit = $x * 4;
    $myRows = anyFour($lowLimit);
}
于 2013-11-07T17:26:23.180 回答
-1

尝试这个:

$sth = $this->db->prepare("SELECT data FROM table WHERE category = 'Sports'
ORDER BY id;");
$sth->execute();

$row = $sth->fetch();
$row_num = 0;
while ($row) {
    $row_num +=1;
    if ($row_num > 4) {
        //do whatever
    }
}
于 2013-11-07T17:16:42.747 回答