如何在PHP中将多个类别分配给单个帖子的方法?
我目前在一个自定义的cms上工作,用户可以将多个类别分配到单个帖子中。我的问题是:如何在PHP中将多个类别分配给单个帖子的方法?,php,mysql,Php,Mysql,我目前在一个自定义的cms上工作,用户可以将多个类别分配到单个帖子中。我的问题是: 正确的mysql表模式是什么 如何在blog post表中存储多个选定类别 请让我知道,如果你有澄清 你这里有一个多对多的关系。存储关系的标准方法是对类别和帖子使用联接表。该表将只有类别ID和帖子ID post表将没有关于类别本身的信息 每个人(包括我自己)似乎都在使用@rwilliams所描述的解决方案。当查询仅限于一个标记时,这些方法可以很好地工作。要查询2个标记(标记为personal和标记为travel)
每个人(包括我自己)似乎都在使用@rwilliams所描述的解决方案。当查询仅限于一个标记时,这些方法可以很好地工作。要查询2个标记(标记为personal和标记为travel),需要使用联接。当查询变得更复杂时,这就开始崩溃。我认为MongoDB是一个更好的解决方案。对于多对多关系,您可以将表设计为
caegory table
categoryId categorydescription
post table
postid postText
a third table to link them
categoryId postId
显示一个条目,其中博客帖子“我的标题”被标记为关于酸奶和摩托车
创建表格cms.Posts(
发帖连载,
后内容文本,
主键(posted)
)引擎=InnoDB;
创建表cms.Categories(
分类序列,
类别名称VARCHAR(20),
主键(类别ID)
)引擎=InnoDB;
创建表cms.PostCategories(
PostID BIGINT UNSIGNED NOT NULL,
CategoryID BIGINT无符号非空,
主键(PostID、CategoryID),
外键(PostID)引用cms.POST(PostID),
外键(CategoryID)引用cms.Categories(CategoryID)
)引擎=InnoDB;
PostCategories
表中:
$dbh=newpdo('mysql:charset=utf8',$username,$password);
$dbh->setAttribute(PDO::ATTR\u EMULATE\u PREPARES,false);
$dbh->prepare('插入cms.Posts(PostContent)值(?))
->执行([$\u POST['content']]);
$qry=$dbh->准备
插入cms.PostCategories(PostID,CategoryID)值(?,)
');
$qry->bindValue(1,$dbh->lastInsertId());
$qry->bindParam(2$category);
foreach($_POST['categories']作为$category)$qry->execute();
你能解释一下最后的第二行和第三行吗?@eggyal:你能告诉我如何列出每个帖子的类别并选择/检查类别吗。我的意思是更新后的页面。
blog_posts
==========
id | 23
title | My title
categories
==========
id | 1
name | yogurt
// another row
id | 2
name | motor cycles
category_blog_post
==================
23 | 2
23 | 1