以正确的方式增加值

时间:2013-10-17 18:01:57

标签: php mysql

我已经整理了一个将mysql查询的输出与PHP分开的方法,以便结果以组的形式返回,由页面分隔(因此,第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个帖子而不是困难。

2 个答案:

答案 0 :(得分:6)

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

$page = $page * 10;

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

答案 1 :(得分:3)

您可以使用以下功能:

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

并使用它:

$page = getNum($page);

如果您想多次这样做,这是一个很好的做法。将逻辑组织到函数中可以使将来更容易更新代码。您不需要在每个语句中修改逻辑。修改一个单一功能就足够了。

int进行类型转换也会确保只在查询中插入数字。

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