Php 基于MySQL页面的查询

Php 基于MySQL页面的查询,php,mysql,Php,Mysql,我目前正在为一个内容站点开发一个分页系统 目前,用户每页将看到10个结果。当用户访问时,它应该显示表中的前10个条目。如果他们访问,则应显示随后的10个结果 下面是我当前执行任务的功能,当访问一个页面时,它似乎不起作用-有什么想法可能导致这种情况吗 function getPagedPosts() { $pageid = $_GET[page]; $page = $pageid - 1 * 10; $options = array(PDO::MYSQL_ATTR_INIT_COMMAND =&g

我目前正在为一个内容站点开发一个分页系统

目前,用户每页将看到10个结果。当用户访问时,它应该显示表中的前10个条目。如果他们访问,则应显示随后的10个结果

下面是我当前执行任务的功能,当访问一个页面时,它似乎不起作用-有什么想法可能导致这种情况吗

function getPagedPosts() {
$pageid = $_GET[page];
$page = $pageid - 1 * 10;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
$query = " 
    SELECT *
    FROM content
    LIMIT '$page', 10
"; 

    try 
    { 
        $stmt = $db->prepare($query); 
        $stmt->execute(); 
    } 
    catch(PDOException $ex) 
    { 
        die("Failed to run query: " . $ex->getMessage()); 
    } 

    $rows = $stmt->fetchAll(); 
foreach($rows as $row):
    print '<tr><td><a href="post/' . $row['id'] . '">' . $row['title'] . '</a><div class="sub ' . $row['subject'] . '">' . $row['subject'] . '</div></td></tr>';
endforeach;
函数getPagedPosts(){ $pageid=$\u获取[页面]; $page=$pageid-1*10; $options=array(PDO::MYSQL_ATTR_INIT_命令=>'SET NAMES utf8'); $db=newpdo(“mysql:host={$host};dbname={$dbname};charset=utf8”,$username,$password,$options); $query=” 挑选* 从内容 限制“$page”,10页 "; 尝试 { $stmt=$db->prepare($query); $stmt->execute(); } 捕获(PDO异常$ex) { die(“无法运行查询:”..ex->getMessage()); } $rows=$stmt->fetchAll(); foreach($行作为$行): 打印“.$row['subject']”; endforeach;
}

我创建了一个称为分页的函数:

<?php

function pagination($query, $per_page = 10,$page = 1, $url = '?'){        
    $query = "SELECT COUNT(*) as `num` FROM {$query}";
    $row = mysql_fetch_array(mysql_query($query));
    $total = $row['num'];
    $adjacents = "2"; 

    $page = ($page == 0 ? 1 : $page);  
    $start = ($page - 1) * $per_page;                               

    $prev = $page - 1;                          
    $next = $page + 1;
    $lastpage = ceil($total/$per_page);
    $lpm1 = $lastpage - 1;

    $pagination = "";
    if($lastpage > 1)
    {   
        $pagination .= "<ul class='pagination'>";
                $pagination .= "<li class='details'>Page $page of $lastpage</li>";
        if ($lastpage < 7 + ($adjacents * 2))
        {   
            for ($counter = 1; $counter <= $lastpage; $counter++)
            {
                if ($counter == $page)
                    $pagination.= "<li><a class='current'>$counter</a></li>";
                else
                    $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
            }
        }
        elseif($lastpage > 5 + ($adjacents * 2))
        {
            if($page < 1 + ($adjacents * 2))        
            {
                for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                }
                $pagination.= "<li class='dot'>...</li>";
                $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
            }
            elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
            {
                $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                $pagination.= "<li class='dot'>...</li>";
                for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                }
                $pagination.= "<li class='dot'>..</li>";
                $pagination.= "<li><a href='{$url}page=$lpm1'>$lpm1</a></li>";
                $pagination.= "<li><a href='{$url}page=$lastpage'>$lastpage</a></li>";      
            }
            else
            {
                $pagination.= "<li><a href='{$url}page=1'>1</a></li>";
                $pagination.= "<li><a href='{$url}page=2'>2</a></li>";
                $pagination.= "<li class='dot'>..</li>";
                for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
                {
                    if ($counter == $page)
                        $pagination.= "<li><a class='current'>$counter</a></li>";
                    else
                        $pagination.= "<li><a href='{$url}page=$counter'>$counter</a></li>";                    
                }
            }
        }

        if ($page < $counter - 1){ 
            $pagination.= "<li><a href='{$url}page=$next'>Next</a></li>";
            $pagination.= "<li><a href='{$url}page=$lastpage'>Last</a></li>";
        }else{
            $pagination.= "<li><a class='current'>Next</a></li>";
            $pagination.= "<li><a class='current'>Last</a></li>";
        }
        $pagination.= "</ul>\n";        
    }


    return $pagination;
} 
?>
<?php
//get the function
include_once ('include/functions/pagination.php');

    $page = (int) (!isset($_GET["page"]) ? 1 : $_GET["page"]);
    $limit = 5;
    $startpoint = ($page * $limit) - $limit;

    //to make pagination
    $statement = "`prodcat_mst`"; //table name 'prodcat_mst'
?>
显示分页:

<?php
    echo pagination($statement,$limit,$page);
?>


希望这能有所帮助。

到底出了什么问题?(但是,幸运的是:删除查询中
'$page'
周围的引号,字符串对于
LIMIT
子句无效。我会将其设置为
$page=(max((int)$pageid,1)-1)*10、 
对于摆弄你的URL的人来说也是如此……谢谢你-现在一切似乎都正常了!没有显示关于你的问题的结果。现在效果很好。
<?php
    echo pagination($statement,$limit,$page);
?>