【问题标题】:Error in pagination code分页代码错误
【发布时间】:2014-01-13 07:12:17
【问题描述】:

我是第一次做分页,遇到了问题。问题似乎出在我使用 mysqli_fetch_array 的地方。错误是这样说的:mysqli_fetch_array() 期望参数 1 是 mysqli_result,boolean given...

这是我的整个分页部分的代码。谢谢!

if (!(isset($page_num))) {
    $page_num = 1;
}

$sqlko = mysqli_query($con, "SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID");
$rows = mysqli_num_rows($sqlko);
$rows_num = 5;
$last = ceil ($rows/$rows_num);

if($page_num < 1) {
    $page_num = 1;
} else if($page_num > $last) {
    $page_num = $last;
}

$max = 'limit ' .($page_num - 1) * $rows_num .',' .$rows_num;


$vytah = mysqli_query($con,"SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID $max ORDER BY clanek_ID DESC ");
while($clanecky = mysqli_fetch_array($vytah)){

    if($clanecky["typ_ID"] == "1") {

    $nadpis_alpha = $clanecky["nadpis"];
    $nadpis = urldecode($nadpis_alpha);
    $obsah = $clanecky["obsah"];
    $uzivatel_ID = $clanecky["uzivatel_ID"];
    $jmeno = $clanecky["jmeno"];
    $prijmeni = $clanecky["prijmeni"];
    $datum = $clanecky["datum"];
    $novinka_ID = $clanecky["clanek_ID"];

    echo "<div class='domu_column'>";
    echo "<h2><a href='index.php?page=novinka&id=$novinka_ID&nazev=$nadpis'>".$nadpis."</a></h2>";
    echo "<div id='novinka_panel'><b>".$jmeno." ".$prijmeni."</b> | ";
    echo $datum."</div>";
    echo "<p>".$obsah."</p>";

    echo "Stránka $page_num z $last";   
    if ($page_num == 1) {
    } else {
        echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=1'> <<-First</a>";
        echo " ";
        $predchozi = $page_num - 1;
        echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=$predchozi'> <<-Předchozí</a>";
    }

    echo "----";
    if ($page_num == $last) {

    } else {

        $next = $page_num + 1;

        echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=$next'>Next -></a> ";

    echo " ";

    echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=$last'>Last ->></a> ";

    }   

                    echo "</div>";
                }}

【问题讨论】:

  • $vytah 上执行php.var_dump() 以返回它的返回值..
  • var_dump 返回布尔值 false
  • 这意味着根本没有返回任何内容。您的 sql 中可能有语法错误..
  • voodoo417 有解决方案。您的$max 必须在查询的最后插入..

标签: php sql pagination


【解决方案1】:

LIMIT(变量 $max)在 SQL 查询中必须位于最后。但是,您在ORDER BY 之前插入。见SELECT Syntax

$max = 'limit ' .($page_num - 1) * $rows_num .',' .$rows_num;
$vytah = mysqli_query($con,"SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID $max ORDER BY clanek_ID DESC ");

改为:

    $vytah = mysqli_query($con,"SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID ORDER BY clanek_ID DESC $max ");

【讨论】:

  • 这是使用 mysqli 和准备好的语句的一个缺点。 or die(mysql_error()) 是一个很棒的工具。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多