Php 将注释插入到与表B链接的表A中,并将其显示在网页上

Php 将注释插入到与表B链接的表A中,并将其显示在网页上,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个函数可以显示数据库中的文章 有两个表,一个包含评论,另一个包含文章。我通过外键连接它们 function show_articles() { include('connection.php'); $sql = "SELECT blog.content_id, blog.title, blog.content, blog.posted_by, blog.date, article_comments.comments, article_comments.comment_by

我有一个函数可以显示数据库中的文章

有两个表,一个包含评论,另一个包含文章。我通过外键连接它们

function show_articles() { 
    include('connection.php');
    $sql = "SELECT blog.content_id, blog.title, blog.content, blog.posted_by, blog.date, article_comments.comments, article_comments.comment_by
            FROM blog LEFT OUTER JOIN article_comments
            ON blog.content_id = article_comments.blog_id
            WHERE blog.content != ''
            ORDER BY blog.content_id DESC";
    $result = mysqli_query($dbCon, $sql);

    $previous_blog_id = 0;

    while ($row = mysqli_fetch_array($result)) {
        if ($previous_blog_id != $row['content_id']) {
            echo "<h5 class='posted_by'>Posted by {$row['posted_by']} on {$row['date']}</h5> 
                <h1 class='content_headers'>{$row['title']}</h1> 
                <article>{$row['content']}</article>;

            $previous_blog_id = $row['content_id'];
        }
        if (!empty($row['comment_by']) && !empty($row['comments'])) {
             echo "<div class='commented_by'>Posted by: {$row['comment_by']} </div> 
                   <div class='comments'>Comments: {$row['comments']}</div>;
        }
    }
}
当我运行上述函数时,出现以下错误:

Cannot add or update a child row: a foreign key constraint fails (`DB1`.`article_comments`, CONSTRAINT `comment_blog_fk` FOREIGN KEY (`blog_id`) REFERENCES `blog` (`content_id`) ON DELETE NO ACTION ON UPDATE CASCADE) 
如何在数据库中插入链接到用户正在回复的文章的注释?外键字段称为blog_id,它位于article_comments表中

编辑:应用后

function insert_comments($comments, $comment_by, $blog_id) {
    include('core/db/db_connection.php');
    $comment_by = sanitize($comment_by);
    $comments = sanitize($comments);
    $sql = "INSERT INTO article_comments (comments, comment_by, blog_id)
            VALUES ('$comments', '$comment_by', '$blog_id')";
    mysqli_query($dbCon, $sql);
}
如何将$blog\u id作为目标?我运行下面的程序

<?php echo list_articles(); 
    if (!empty($_POST)) {
        insert_comments($_POST['comments'], $_POST['username'], 11);
    }
?>
<form method='post' action='' class='comments_form'>
    <input type='text' name='username' placeholder='your name... *' id='name'>
    <textarea name='comments' id='textarea' placeholder='your comment... *' cols='30' rows='6'></textarea> 
    <input type='submit' name='submit' id='post' value='post'>
</form>

我之所以使用11,是因为我想定位博客文章内容的第11个id,并将其与评论链接起来


如何在不手动插入号码的情况下执行此操作?

您必须在插入文章注释中填写blog\u id字段,如下所示:

function insert_comments($blog_id, $comment_by, $comment) {
    include('core/db/db_connection.php');
    $comment_by = sanitize($comment_by);
    $comment = sanitize($comment);
    $sql = "INSERT INTO article_comments (blog_id, comment_by, comment)
            VALUES ($blog_id, '$comment_by', '$comments')";
    mysqli_query($dbCon, $sql);
}

谢谢,这很有道理。但是我如何定位$blog\u id?请查看我编辑的问题。您可以在表单中添加隐藏的html元素:
function insert_comments($blog_id, $comment_by, $comment) {
    include('core/db/db_connection.php');
    $comment_by = sanitize($comment_by);
    $comment = sanitize($comment);
    $sql = "INSERT INTO article_comments (blog_id, comment_by, comment)
            VALUES ($blog_id, '$comment_by', '$comments')";
    mysqli_query($dbCon, $sql);
}