PHP / MySQL SELECT LIMITER问题

时间:2013-06-30 12:28:37

标签: php mysql mysqli limit

我之前发过这个问题,但我不知道原因,但现在我做了。另一个问题是失控。

我正在制作页面功能(下一页等..)并需要我的$限制器来选择每页9个查询。我遇到的问题是第二页(9,9)没有进来。

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {
        $currentPage = $_GET["p"];
        $limiter = $currentPage * 9;
} else {
        $currentPage = 1;
        $limiter = 0;
}

$finalQuery = "SELECT * FROM forum_replies WHERE thread_id = '1' ORDER BY id ASC LIMIT " . $limiter . ",9";

因此,如果页面为1,则$ limiter为0.所以.. 0,9进来

接下来应该是9,9,但代码完整性会跳过,所以我错过了第二页

第三页作品是18,9

所以..它是0,9 - 18,9,27,9等。完全跳过9,9。我将添加到if(isset))函数中以使其选择all而不跳过9,9。

3 个答案:

答案 0 :(得分:1)

如果我没错,我认为你对$ limiter变量的计算是不正确的。 它应该是$ limiter =($ currentPage - 1)* 9;

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {
    $currentPage = $_GET["p"];
    $limiter = ($currentPage -1) * 9;
} else {
    $currentPage = 1;
    $limiter = 0;
}

$finalQuery = "SELECT * FROM forum_replies WHERE thread_id = '1' ORDER BY id ASC LIMIT " . $limiter . ",9";

答案 1 :(得分:0)

由于您的if condition

,您错过了第1页
if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {

设置为跳过分页逻辑,除非页面大于1.所以它错过了page = 1.

仅当p为0时,根据您的代码,如果p = 1则代码将呈现0,9,那么您的代码将呈现9,9

答案 2 :(得分:0)

尝试更改此内容:

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] > 1) {

到此:

if(isset($_GET["p"]) && is_numeric($_GET["p"]) && $_GET["p"] >= 1) {

而且:

$limiter = $currentPage * 9;

到此:

$limiter = ($currentPage-1) * 9;

因为如果$ currentPage为1,您希望您的限制为0,9。