-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'])){おそらくfalsePDO コードを評価し、実行していません。

現在、コードは$articles常に値を持つと想定しています。これは、次の 2 つのいずれかが当てはまることを意味します。

  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 に答える