MySQL表评论

时间:2011-06-08 23:13:53

标签: php mysql

这是一个非常业余的问题(不要因为它而让我失望)但是如何创建一个列

征求意见

包含分配给他们的帖子的ID?

例如,如果我要发布关于#48的评论,我将如何在MySQL中进行设置以便

评论显示在第48个帖子而不是所有帖子上?

提前致谢:)

5 个答案:

答案 0 :(得分:6)

您不会为评论创建,而是创建新的

简单地,

table Post
id,
content

table Comment
id,
content,
post_id

其中post_id是对帖子ID的引用。

答案 1 :(得分:2)

它是一对多关系(一个帖子可以有很多评论),所以你会想要一个新的表格。

comments_tbl
 - comment_id  |   int(11) auto_increment
 - post_id     |   int(11) (FK to post table)
 - author_id   |   int(11) (FK to the user table OR author_name)
 - date        |   datetime
 - comment     |   text

如果您希望能够标记和审核评论,您可能希望包含以下内容:

 - date_approved  |  datetime
 - flagged        |  int(1)

然后您的SQL显示帖子的评论就像

mysql_query("SELECT comment_id, author_name, comment FROM comments_tbl WHERE post_id = '$postid' AND date_approved IS NOT NULL AND flagged = '0'");

向数据库添加注释:

mysql_query("INSERT INTO comments (post_id, author_id, date, comment) VALUES ('$postid', '$author_id', '$date', '$comment');

答案 2 :(得分:0)

首先,您需要在PHP代码中执行的操作是存储注释所分配的帖子的变量ID(例如$postId。然后您可以在 new 表中插入注释有些人喜欢这样(我不是在写表结构,希望你能从查询中看到它):

mysql_query("INSERT INTO comments (id_post, text) VALUES ('".$postId."', 'Text of the comment'");

如果要选择它,您将使用此查询:

mysql_query("SELECT text FROM comments WHERE id_post = '".$postId."'");

顺便说一下,id_post列被称为外键,应该为它定义索引。

答案 3 :(得分:0)

如果您的帖子有表格,则需要一个新表格供您评论。要将评论与帖子相关联,只需在评论表中添加post_id列。

comments
- comment_id int(8) Auto_Increment 
- post_id int(8)
- comment_author varchar(255)
- comment_content text()

post_id应该是您要将评论关联到的帖子的ID,其中每个评论都会在此表中获得自己的行。如果您的作者可以使用更好的ID进行关联,只需将varchar(255)更改为int(8)或其他适合您设计的内容。

答案 4 :(得分:0)

你需要像

这样的东西
CREATE TABLE `comments` (id int unsigned not null auto_increment PRIMARY KEY,
post_id int unsigned not NULL,
// other fields, post_date, post_text, etc
FOREIGN KEY (post_id) REFERENCES posts(id) ON DELETE CASCADE ON UPDATE CASCADE)

注意:FOREIGN KEY引擎支持INNODB,因此如果您的表格为MyISAM,则不需要它。 post_id必须与posts中的主键具有相同的类型 - 我假设post.id是无符号整数。