【发布时间】:2021-01-30 12:10:50
【问题描述】:
目前函数“getPostTag”只返回一个标签。
我创建了一个联结表,其中包含一个名为“posts”的表的外键“post_id”和一个“tag_id em>” 到名为“tags” 的表的外键,这些条目相应地存储在该表中。
有了这张表,我希望它能够将多个标签附加到多个帖子。
然后它还应该能够返回带有标签集的每个帖子。
我怎样才能做到这一点? (如果这些功能需要完全重做,我不会失望。)
function getPosts() {
global $conn;
$sql = "SELECT * FROM posts ORDER BY id DESC";
$result = mysqli_query($conn, $sql);
$posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
$final_posts = array();
foreach ($posts as $post) {
$post['tag'] = getPostTag($post['id']);
array_push($final_posts, $post);
}
return $final_posts;
}
function getPostTag($post_id){
global $conn;
$sql = "SELECT * FROM tags WHERE id=
(SELECT tag_id FROM post_tags WHERE post_id=$post_id) LIMIT 1";
$result = mysqli_query($conn, $sql);
$tag = mysqli_fetch_assoc($result);
return $tag;
}
【问题讨论】:
-
您想在哪里返回这些标签?你想让
$post['tag']成为一个标签数组吗? -
好的,谢谢。我真的不知道,其实。我只是认为这将是有效的。如您所见,我是一个完全的 SQL 菜鸟。感谢您的帮助。
标签: php mysql tags many-to-many posts