1

我只是快速为一个文章网站编写了一个脚本,我从数据库中检索文章。

这是我的 index.php 脚本

    <?php
    // include header
    require("include/header.php");
    require("include/helperfunctions.inc.php");
    ?>

    <!-- page content -->
    <!-- left section -->
    <section id="contentleft">
<?php require("include/functions.php"); 
displayArticles();
foreach ($articles as $article) : ;
?>
<h2>Recent Articles</h2>
    <ul>
        <li><?php echo htmlout($articles['id']) ; ?></li>
        <li><?php echo htmlout($articles['title']) ; ?></li>
        <li><?php echo htmlout($articles['summary']) ; ?></li>
    </ul>
<?php endforeach; ?>
    </section>

    <!-- right content -->
    <section id="contentright">

    </section>

    <?php
    // include footer
    require("include/footer.php");
    ?>

这是函数库的开始

    function displayArticles($order="publicationdate DESC"){
        // connect to the database
        include("include/db.inc.php");
    $query = "SELECT id, title, summary FROM maths order by ". $order . " limit 10";

// query the database
$result = mysqli_query($link, $query);
    // error checking
    if(mysqli_connect_errno()){
    // $error = "error fetching articles";
    echo " could not connect: " . mysqli_connect_errno() . " ";
    exit();     
}
// loop through storing values into array
while($row = mysqli_fetch_array($result)){
    $articles[] = array('id'=>$row['id'] , 'title'=>$row['title'],'summary'=>$row['summary']);        
}

    }

    ?>

我收到此错误:

警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在第 17 行的 C:\Apache24\htdocs\include\functions.php 中给出 最近的文章注意:未定义的变量:C:\Apache24\htdocs\home.php 中的文章第 14 行警告:为第 14 行 C:\Apache24\htdocs\home.php 中的 foreach() 提供的参数无效

4

1 回答 1

2

它看起来像是 $articles 对象的范围问题。您在 displayArticles() 函数中创建 $articles .. 但在函数之外,您的其他代码不知道它。尝试在 displayArticles() 中返回 $articles,并替换您的 displayArticles(); 在第一页的顶部调用:

$articles = displayArticles();

此外,正如评论中指出的那样,您在 foreach 块中引用了错误的对象。删除每个 $articles[blah] 末尾的“s”,使其读取为 $article[blah]。

于 2012-07-01T19:39:45.957 回答