如何在PHP中跳过结果集中的行?

时间:2015-11-19 05:12:41

标签: php mysql

我正在使用搜索功能和分页。

继承我的搜索功能代码

if( isset($_POST['searchBut']) ) {

        $name = $_POST['inputSearch'];
        $pageSearch = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;

        //lets say there are 10 items selected with this query
        $searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' ";

        $result = $db->query($searchQuery);

        //getting total rows
        $fetchTotalRow = mysqli_num_rows($result);

        //getting total pages
        $totalPages = ceil($fetchTotalRow / $perPage);

        $links = "";

        for ($i = 1; $i <= $totalPages; $i++) {
                $links .= ($i != $pageSearch )  ? "<li><a href='collections.php?page=$i'>Page $i</span></a></li> " : "<li class='active'><a href='collections.php?page=$i'>Page $pageSearch</a></li> ";
        }
}

现在如何将我的页面限制为第一页中的9个项目,最后一个页面将位于第二页上。 我已成功将此应用于LIMIT($ start,$ offset)函数的正常分页,但这是针对数据库的,如何使用结果集执行此操作?

3 个答案:

答案 0 :(得分:0)

您需要在查询中添加LIMIT

//page 1
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' LIMIT 0, 9";

//page 2
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' LIMIT 1, 9";

MySQL将首先搜索整个集合,然后仅返回指定的LIMIT。 LIMIT不会仅搜索前9个帖子......

答案 1 :(得分:0)

使用 LIMIT 0,9 LIMIT 9 OFFSET 0

在你的情况下,

$pageSearch = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;

$pageOffset = $pageSearch - 1;

$limitQuery = "LIMIT $pageOffset , 9 ";

//lets say there are 10 items selected with this query
$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' " . $limitQuery;

答案 2 :(得分:0)

你必须使用 LIMIT 。您必须使用像LIMIT ".($pageSearch-1).", ".$perPage这样的LIMIT全部......如下所示:

$searchQuery = "SELECT name,image,price,description FROM image WHERE name LIKE '%".$name."%' LIMIT ".($pageSearch-1).", ".$perPage;