0

我不确定如何在 PHP 和 MySQL 中创建一个可以一次处理数百条评论的线程评论系统。

像这样的东西是我唯一能想到的

$query = execute_query...('SELECT * FROM `comments` WHERE `post` = "1"');
foreach($query as $comment){
    $replies = execute_query...('SELECT * FROM `comment_replies` WHERE `comment` = "' . $comment['id'] . '"');
    if($replies){
        echo $comment['body']; //....
        foreach($replies as $reply){ /*....*/ }
    }
    else{
        echo $comment['body'];
    }
}

因此,我需要有关数据库结构的提示以及如何在考虑性能的情况下检索所有线程注释:)

4

3 回答 3

6

我相信您会发现文章在 MySQL 中管理分层数据很有帮助。这两张表可以很容易地合并为一张

于 2010-01-27T22:19:10.647 回答
1

为什么不加入评论和comment_replies 表?

然后只需添加一个额外的生成字段,显示它是评论还是评论回复。并在 foreach 中使用 if 选择它们,例如:

if($type == 'comment') 
{
      //do something with the comment
}
elseif($type == 'comment_reply')
{
      //do something with the comment reply
}

还要检查评论 ID 是否更改,以便将它们分开。

于 2010-01-27T21:48:07.317 回答
1

我会选择邻接列表模型而不是嵌套集模型,因为使用嵌套集模型,我必须在表上完成的每个 INSERT 和 DELETE 操作上构建整个树结构,如果我有 1000 条记录,对于单个 INSERT 或DELETE 操作必须更新所有记录,这需要更多时间来执行。我的数据库结构将是: 在此处输入图像描述

我还用 php mysql jquery 和 ajax 编写了一个小型线程评论系统。看看http://pradipchitrakar.com.np/programming/threaded-comment-system/

于 2012-08-08T09:45:29.010 回答