【问题标题】:PHP Pagination Showing Error [closed]PHP分页显示错误[关闭]
【发布时间】:2014-12-12 23:19:55
【问题描述】:

我为我的网站创建了一个分页,它显示一个错误:

解析错误:语法错误,第 29 行的文件夹名中出现意外的 '"'

这是我一直在处理的代码:

<?php

    $count_query = mysql_query("SELECT NULL FROM posts");
    $count = mysql_num_rows($count_query);

    if (isset($_GET['page'])) {

        $page = preg_replace("#[^0-9]#","",$_GET['page']);

    } else {

        $page = 1;

    }

    $perPage = 10;
    $lastPage = ceil($count / $perPage);

    if ($page < 1) {

        $page = 1;

    } else if ($page > $lastPage) {

        $page = $lastPage;

    }

    $limit = "LIMIT " .($page -1)"$perPage.","$perPage";

    $query = mysql_query("SELECT * FROM posts ORDER BY postNum DESC $limit");

    if ($lastPage != 1) {

        if ($page != $lastPage) {
            $next = $page + 1;
            $pagination .= '<a href="foldername/?page='.$next.'" class="pagerRight">Next</a>';
        }

        if ($page != 1) {
            $prev = $page - 1;
            $pagination .= 'foldername/?page='.$prev.'" class="pagerLeft">Prev</a>';
        }

    }

?>

第 29 行是:$limit = "LIMIT " .($page -1)"$perPage.","$perPage";

【问题讨论】:

  • 是的,$limit = "LIMIT " .($page -1)"$perPage.","$perPage"; 肯定有问题
  • 警告:mysql_query 是一个过时的接口,不应在新的应用程序中使用,因为它会在未来的 PHP 版本中被删除。像PDO is not hard to learn 这样的现代替代品。如果您是 PHP 新手,PHP The Right Way 之类的指南可以帮助您解释最佳实践。这里还有一些高度可疑的代码来注入分页变量,这看起来异常复杂。
  • 是的,我知道,但你知道那段代码有什么问题吗???
  • echo $limit = "LIMIT " .($page -1)"$perPage.","$perPage"; 你会看到正在通过什么。你需要修复你的连接。
  • 如果我们知道你想要 $limit 是什么,这个语法错误会更容易发现。

标签: php mysql pagination


【解决方案1】:

你可以尝试改变

$limit = "LIMIT " .($page -1)"$perPage.","$perPage";

与

$limit = "LIMIT ".($page -1)*$perPage.",".$page*$perPage."";

此解决方案将 $page-1 乘以 10(我已经看过您的代码),将分页 -1 * 10 限制为 *10 页

例子:

第 1 页:

限制 0、10 第2页: 限制 10,20 等等……

编辑:

尝试改变

$query = mysql_query("SELECT * FROM posts OREDER BY postNum DESC $limit");

与:

$query = mysql_query("SELECT * FROM posts ORDER BY postNum DESC ".$limit."");

用 ORDER 更正了 OREDER 并使用了正确的链(点)

【讨论】:

  • 这确实有效,但它显示了所有将其分页为 10 的帖子。
  • @Arqetech 编辑了我的答案
  • 还是一样的结果 :(
  • OREDER 是输入错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 2014-09-30
  • 1970-01-01
  • 1970-01-01
  • 2020-09-16
相关资源
最近更新 更多