-1

私はコメントシステムに取り組んでいますが、現時点ではかなり基本的です。データベースからコメントを取得しようとすると、エラーが発生します。

私にとっての好奇心は、これが私が同様のページで使用したものとほぼ同じコードであり、エラーがないことです...

流れは

HTMLフォーム:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']."?id=".$id?>" id="addComment" class="form-horizontal">
<textarea class="span10" name="comment" id="comment" rows="3" class="required"></textarea>
<button type="submit" name="addComment" id="addComment" class="btn btn-primary btn-large">Add Comment</button>
</form>

PHP のページのトップ:

if($_SERVER['REQUEST_METHOD'] == 'POST'){

//have id already
$name = trim(htmlspecialchars($_POST['name']));
$comment = trim(htmlspecialchars($_POST['comment']));

$articleComments->addComment($id, $name, $comment);

}
?>

関数:

//add comment to an article(check ip for bans(later))
public function addComment($articleId, $name, $comment){

    $query = $this->db->prepare("INSERT INTO `articleComments`
                (`articleId`,`name`,`date`,`comment`)
                VALUES (?,?,?,?)");
    $date = date ("Y-m-d H:i:s", time());
    $query->bindValue(1, $articleId);
    $query->bindValue(2, $name);
    $query->bindValue(3, $date);
    $query->bindValue(4, $comment);

    try{
        $query->execute();
    }catch(PDOException $e){
        die($e->getCode());
    }
}

そして出力関数:

    //get all comments
public function getAllComments($aticleId){

    $query = $this->db->prepare("SELECT * FROM `articleComments` WHERE `articleId` = ?");
    $query->bindValue(1,$aticleId);

    try{
        $query->execute();
        return $query->fetchAll();
    }catch (PDOException $e){
        die($e->getMessage());
    }
}

出力が続きます:

$comments = $articleComments->getAllComments($id);

foreach ($comments as $c){

  $commentId = $c['id'];
  $name = $c['name'];
  $date = $c['date'];
  $comm = $c['comment'];
  $like = $c['likes'];
  //echo "Name: " . $name;
  //echo "  Date: " . $date;
  echo $comments;    
 }

名前やIDなどはすべて問題ありません。しかし**Notice: Array to string conversion in bla**、コメントを求めても何も出力されません。変数をダンプしましたが、間違いなくそこにあります。それを取得する方法や、期待どおりに機能しない理由がわかりません。

私は(noobテストとして)同様にdbをvarcharに変更しようとしましたが、同じ結果でした。

4

1 に答える 1

2

あなたが言及した「ブラブラ」は、どこで問題を探すべきかについての最大の手がかりになるはずです。この行でエラーが発生したことが正確に示されているので、この行を見てください。

これを参照してください:

echo $comments;

代わりにこれをやりたかったと思います:

echo $comm;

$commentsが配列の場合、コメントのテキストを に割り当てます$comm

于 2013-09-26T15:43:51.480 に答える