gpt4 book ai didi

php - 识别和连接表之间的 ID

转载 作者:可可西里 更新时间:2023-11-01 08:44:43 24 4
gpt4 key购买 nike

我有两张表,一张存文章内容,一张存文章评论

我用来显示这些的函数是:

function list_articles() { 
include('core/db/db_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>
<hr class='artline'>";
$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>
<hr class='artline2'>";
}
}
}

我使用下面的代码将评论插入到 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_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 作为最后一个变量的参数。这链接到我的 article_comments 表中的 blog_id 11(外键)。它正在正常显示评论。

有什么方法可以定位 $blog_id 而无需手动插入数字吗?类似于我如何使用 $_POST['comments'] 定位 $comments 变量?

此外,即使我可以定位,我怎么知道用户评论的是哪个帖子?我应该让他们在下拉列表中选择吗?这看起来很尴尬..但这是我能想到的唯一解决方案。

编辑:我尝试在隐藏字段中定位 blog_id:

function list_articles() { 
include('core/db/db_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>
<hr class='artline'>";
$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'>Comment: {$row['comments']}</div>
<hr class='artline2'>";
}
$sql2 = "SELECT FROM article_comments VALUES blog_id";
$result2 = mysqli_query($dbCon, $sql2);
while ($row = mysqli_fetch_assoc($result2)) {
echo " <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='hidden' name=blog_id' value='{$row['blog_id']}'>
<input type='submit' name='submit' id='post' value='post'>
</form>";
}
}
}

sql2 和 result2 部分是导致错误的语句

编辑 2:

我认为 $sql2 不是正确的方法。代码现在可以正常工作,但我回到第 1 个方 block 。对于每条评论,插入的文章都会重复。

<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='hidden' name=blog_id' value='{$row['blog_id']}'>
<input type='submit' name='submit' id='post' value='post'>
</form>";

有什么方法可以在不调用 while ($row = mysqli_fetch_array($result)) {} 的情况下定位 blog_id 吗?或者至少,不在第二个 while 循环中调用它?

我发布的第一段代码得到以下结果:

Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
--------------------------------------
Name: DSK
Comment: Great article!
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment

-- BEGIN SECOND ARTICLE ON WEBPAGE

Article title: LOREM IPSUM 2nd article
Content: LOREM IPSUM DOLOR SIT AMET....
--------------------------------------
Name: User0
Comment: Great article!
--------------------------------------
Name: User1
Comment: Great article! - 2nd comment
--------------------------------------
Name: User2
Comment: Great article! - 3rd comment
--------------------------------------

这正是我要找的。但是我只能通过 phpmyadmin 界面插入评论,手动选择外键(blog_id)。

我希望能够通过表单获得相同的结果:

Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
-------------------------------------- //comments
Name: DSK
Comment: Great article!
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment
-------------------------------------- // end comments

|-------------------------------------| // comments form
|Name: New User |
|Comment: New comment ! |
| |
|-------------------------------------|
[Submit]

当用户提交表单时,他的姓名和评论将被提交到数据库的 article_comments 表中。此外,外键 (blog_id) 应链接到现有文章(确实如此)。我只需要一种在我的函数中定位它的方法。

这有什么意义吗?......

最佳答案

也许您可以在表单中使用隐藏的表单元素:

<input type="hidden" name="blog_id" value="<?PHP echo $id;?>">

然后在提交时您可以使用 $_POST["blog_id"] 访问它

如果我正确理解你的问题,那就是。

关于php - 识别和连接表之间的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32025777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com