0

我已经整理了一种使用 PHP 分离 mysql 查询的输出的方法,以便结果分组返回,按页面分隔(因此,第 0 页有帖子 1 到 10,第 1 页有帖子 11 到 20,依此类推)。

URL 像这样传递一个变量;

http://domain.com/test.php?page=0 (this will render results 1 through 10)

值 0 用于该特定页面的 MySQL 查询,如下所示;

$page = $_GET['page'];
select <search> limit $page, 10; (this has been made brief to spare you the superfluous details).

因此,挑战在于获取从 URL 传递到查询的这个值,以便为该页面呈现正确的结果。我想出了一种方法来做到这一点,但坦率地说,我对此并不满意,我不禁有一种感觉,它最终会出现问题。

if ($page == "0")
        {
        $page = 0;
        }
elseif ($page == "1")
        {
        $page = 10;
        }
elseif ($page == "2")
        {
        $page = 20;
        }
elseif ($page == "3")
        {
        $page = 30;
        }
elseif ($page == "4")
        {
        $page = 40;
        }
elseif ($page == "5")
        {
        $page = 50;
        }
elseif ($page == "6")
        {
        $page = 60;
        }

就像我说的,这似乎可行,但有没有更聪明的方法来做到这一点?我需要更有效地更改该值,并且希望找到一种方法,以便如果我明天改变主意并决定每页呈现 15 个帖子而不是那么困难。

4

2 回答 2

6

嗯......也许我错过了一些明显的东西,但你为什么不这样做呢?

$page = $page * 10;

如果您决定明天每页呈现 15 个帖子,只需将其更改为 15 个。

于 2013-10-17T18:03:29.650 回答
3

你可以使用这样的函数:

function getNum($page) {
    return (int) $page * 10;
}

并像这样使用它:

$page = getNum($page);

如果您想多次执行此操作,这是一个很好的做法。并且将您的逻辑组织到一个函数中可以更容易地在将来更新代码。您不需要修改每个语句中的逻辑。修改一个函数就足够了。

类型转换int也将确保仅将数字插入到您的查询中。

但是,在将用户输入插入数据库之前,您仍应正确转义用户输入(首选方法是使用MySQLiPDO和参数化查询)。

于 2013-10-17T18:04:12.293 回答