如何为特定帖子制作评论系统并检索它?

时间:2017-12-25 10:48:58

标签: php mysql database

我正在为网站制作问答系统。我在这里遇到问题。我想让用户为每个帖子添加特定的评论。我制作的脚本与Quora.com类似,所以你可以理解我的脚本是如何工作的...这就是我的评论表的样子,请看一下图片。 如何为每个帖子添加特定评论?

take a look at the image (comments table)     

    //code for insert comments to the tables 
    function setComments($connection) {
        if (isset($_POST['commentSubmit'])) {
            $uid = $_POST['uid'];
            $date = $_POST['date'];
            $message = $_POST['message'];

            //sql connection 
            $sql = "INSERT INTO comments (uid,date,message) VALUES ('$uid','$date','$message')";
            $result = $connection ->query($sql);
        }
    }
    //function for get comments from the databse 
    function getComments($connection) {
        $sql = "SELECT * FROM comments";
        $result = $connection ->query($sql);
        while($row = $result->fetch_assoc()) {
            //showing records 
            echo '<div id="comment_box">';
            echo $row['uid'].'<br>';
            //echo $row['cid'].'<br>';
            echo nl2br($row['message']).'<br>';
            echo $row['date'];
            echo '</div>';
            echo '<hr>';
        }
    }

我在这里做了两个函数 setComments 用于插入注释
其他功能适用于 getComments

已更新

此问题表适用于提问,因此用户可以提出问题。

this is question table

1 个答案:

答案 0 :(得分:1)

您只需在评论表中添加post_id,以便每条评论都与特定帖子相关。并将其声明为foreign key

然后,set_commentsget_comments这两个函数都应该有一个post_id参数,该参数将插入到评论表中并查询特定帖子的评论:

INSERT INTO comments (uid,date,message, post_id) VALUES ('$uid','$date','$message', '$post_id');

之后,使用此post_id,您可以通过此ID查询特定帖子下的评论。

请注意:尝试使用prepared statements代替数据库操作。

<强>更新

您应添加为外键的列应与原始表中的列具有完全相同的数据类型。

所以,假设你有一个问题表,Id为整数。然后,您应该添加到comments表的外键列应如下所示:

ALTER TABLE comments ADD question_id INT NOT NULL;
ALTER TABLE comments ADD CONSTRAINT fk_question_id FOREIGN KEY (question_id) REFERENCES questions(id);