PDO偏移和限制突破查询

时间:2016-09-10 18:55:33

标签: php mysql pdo

我正在论坛上工作。要拉出我使用的实际论坛帖子

            $query = <<<SQL
            SELECT *
            FROM forum_forums
            WHERE category = :category
            ORDER BY sticky DESC, lastAnswer DESC 
            LIMIT :limit 
            OFFSET :offset
SQL;
            $resource = $db->db->prepare( $query );
            $resource->execute(array (
                ":category" => $_GET['ident3'],
                ":limit"    => $limit,
                ":offset"   => $offset,
            ));

限制和偏移是定义的变量,但是如果我从查询中删除它们“工作”并获取结果,但是破坏了分页部分,想知道我准备这个查询的方式是否有问题,因为它当我直接在执行函数中使用查询并使用$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);我真的不关心以这种方式运行查询时,它可以工作。

在查询之上我们也有。

        try {
            $query = <<<SQL
            SELECT COUNT(*)
            FROM forum_forums
            WHERE category = :category
SQL;

            $resource = $db->db->prepare( $query );
            $resource->execute( array (
                ":category" => $_GET['ident3'],
            ));
            $total = $resource->fetchColumn();
            $limit = 1;
            $pages = ceil($total / $limit);
            $page = min($pages, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
                'options' => array(
                    'default'   => 1,
                    'min_range' => 1,
                ),
            )));
            $offset = ($page - 1)  * $limit;

0 个答案:

没有答案