-2

我知道以前有人问过这个问题,但是我经历的所有答案都没有真正帮助。所以这应该输出一个主题的内容,但是它告诉我

注意:未定义变量:第 77 行 /var/www/article.php 中的文章

致命错误:在第 77 行的 /var/www/article.php 中的非对象上调用成员函数 fetch()

        if(isset($_GET['id'])){
        $setid = $_GET['id'];       
        $articles = $dbh->prepare('SELECT * FROM front_articles WHERE article_id=:article_id');
        $articles->bindParam(':article_id', $setid, PDO::PARAM_INT);
        $articles->execute();
}       
        while($article = $articles->fetch(PDO::FETCH_OBJ)) {
        echo $article->article_content;
}

编辑:问题是我有相同的用户统计代码,它工作得很好

        <?php
        if(isset($_GET['id'])){
        $setid = $_GET['id'];       
        $user_stats = $dbh->prepare('SELECT * FROM users WHERE ID=:ID');
        $user_stats->bindParam(':ID', $setid, PDO::PARAM_INT);
        $user_stats->execute();
        }
    while($stats = $user_stats->fetch(PDO::FETCH_OBJ)){
   ?>
   <div id="stats"> 
    <?php   
    echo 'Username: '.$stats->username.'<br>'.
          'e-mail: '.$stats->email.'<br>'.
          'Posts: '.$stats->post_count.'<br>'.
          'Member Since: '.$stats->created.'<br>'.
          'Age: '.$stats->age.'<br>'.
          'Location: '.$stats->location.'<br>'.
          'Name: '.$stats->name.'<br>';
   ?>   
    </div>  
<?php   
    }
?>
4

2 回答 2

2

错误告诉你这$articles不是一个对象。所以你从来没有定义它。请注意,您尝试定义它,但仅在条件语句内。所以,很明显,那个条件代码块没有被执行。

简而言之,if(isset($_GET['id'])){可能正在评估false而不是执行您的 PDO 代码。

目前,您的代码假定它$articles总是有一个值。这意味着两件事之一是正确的:

  1. 这个假设是错误的,你应该$articles在尝试使用它之前检查它是否有一个值。
  2. 假设是正确的,if不需要条件(因为它应该总是true)并且可以完全删除。

可能是假设是错误的。

于 2013-10-25T14:33:53.410 回答
0

文章不是对象。当您没有从 DB 获得任何结果时,您可以将其放在 if 语句中以跳过。

if(isset($_GET['id'])){
        $setid = $_GET['id'];       
        $articles = $dbh->prepare('SELECT * FROM front_articles WHERE article_id=:article_id');
        $articles->bindParam(':article_id', $setid, PDO::PARAM_INT);
        $articles->execute();
}       

        if (isset($articles)) {
        while($article = $articles->fetch(PDO::FETCH_OBJ)) {
        echo $article->article_content;
        } else {
        echo 'No result found. Err: Article is not an object';
        }
}
于 2013-10-25T14:36:53.300 回答