mysql LIMIT并不断检索行

时间:2014-04-17 20:06:25

标签: php mysql sql

我将为我的数据库类(数据库中的新项目)执行一个项目。我会用php。这些表是在mysql中创建的。我必须显示一个包含一些信息的网页:

attr1 | atrr2 | atrr3 | atrr4 
      |       |       |
      |       |       |

但我想显示最后插入的20行。然后,如果用户想要看到插入的其他行,则网页将有一个下一页按钮,显示以下20行(不是相同的行)。

我知道我可以使用类似的东西:

select (attributes) from tbl ORDER BY 'ID' DESC LIMIT 20

1-然后,我如何检索(使用php编程)其他20行?如果我使用相同的查询,它将显示相同的信息。

2-我想只是查询所有数据并以某种方式存储它,但我不知道即使用户不想看到它也是存储所有数据的好选择。我想把它作为我的第一个问题,因为我必须从数据库中的其他表中检索其他信息。

你有什么建议?我如何在第一个问题中按照自己的意愿检索数据?

2 个答案:

答案 0 :(得分:1)

这个概念叫做pagination。在这 -

1st) LIMIT 20,0    (from 1 to 20)
2nd) LIMT 20,20    (from 21 to 40)
3rd) LIMIT 20,40   (from 41 to 60) 
4th) LIMIT 20,60   (from 61 to 80)

它是limitoffset的组合。第1,第2,第3 ......是页面,(LIMIT 20,0)是查询的插件,offset参数来自$_GET(来自{{1} }})

答案 1 :(得分:1)

我最近在一个项目中做了其中一个。我使用Bootstrap pagination class来设置它的样式:

<div class="pagination" style="text-align:center">
<ul>

<?php

        if($firstPage)
        {
            $relative = "./";
        }
        else
            $relative = "../";

        if($page != 1)
        {
            echo "<li><a href=\"".$relative."page/$page\">&laquo;</a></li>";
        }
        for($i = 1; $i <= ceil($numRows / $numItems); $i++)
        {
            if($i == $page)
                echo "\t<li><a href=\"".$relative."page/$i"."\" style=\"background-color:#e5e5e5;color:#AAAAAA;\"><b>".$i."</b></a></li>";
            else
                echo "\t<li><a href=\"".$relative."page/$i\">".$i."</a></li>";
        }
        if(($page+1) <= ceil($numRows / $numItems))
            echo "\t<li><a href=\"".$relative."page/".($page+1)."\">&raquo;</a></li>";
?>
</ul>
</div>

然后在控制器中,我形成了查询:

$numItems = 20;  // Number of results to show per page
$q = "SELECT * FROM --- WHERE ---- = $-----";
$q .= " LIMIT ".(($page_number-1)*$numItems).','.($numItems*($page_number));