首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP/MySQL博客系统

PHP/MySQL博客系统
EN

Stack Overflow用户
提问于 2013-11-09 01:26:09
回答 2查看 810关注 0票数 0

我正在制作一个博客系统,我想在我的博客文章中添加“标签”。这些类似于你在这里看到的标签,它们可以用来对主题相似的帖子进行分组。

我想将标签存储在数据库中,作为逗号分隔的字串(非空白字符串)。但我不太清楚如何搜索所有包含标签A和标签B的帖子。

我不喜欢使用小型数据库的简单解决方案,在这个解决方案中,我检索所有数据并使用PHP循环对其进行扫描,因为这不适用于大型数据库(即使不是数千篇,也有数百篇)。我不打算写这么多博客,但我希望系统是可靠的,通过直接从数据库中获得正确的结果来节省PHP脚本上的工作时间。

假设我的桌子看起来像这样(实际上它有点复杂)

代码语言:javascript
运行
复制
blogposts:
id   | title         | content_html                  | tags
0    | "hello world" | "<em>hello world!</em>"       | "hello,world,tag0"
1    | "bye world"   | "<strong>bye world!</strong>" | "bye,world,tag1,tag2"
2    | "hello you"   | "hello you! :&gt;"            | "hello,tag3,you"

如何选择标签中包含"hello""world"的所有帖子?我知道LIKE语句,在那里您可以搜索子字符串,但是可以将它与多个子字符串一起使用吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-09 01:39:41

您不能以有意义的方式索引csv值字段,SQL也不支持在CSV值字段中找到唯一的值。相反,您需要再设置两个表,并对表进行以下更改。

博客:

id _ title _ content_html

标签:

id = tag_name

分类表:

id = blogpost_id \ tag_id

当向博客文章添加标记时,将向分类法表中插入新记录。当您查询数据时,您将连接所有三个表以获得类似于以下内容的信息:

代码语言:javascript
运行
复制
SELECT `tag_name` FROM `blogposts` INNER JOIN `blogposts_taxonomy` ON
`blogposts`.`id`=`blogposts_taxonomy`.`blogpost_id` INNER JOIN `blogpost_tags` ON
`blogposts_taxonomy`.`tag_id`=`blogpost_tags`.`id` WHERE `blogposts`.`id` = someID;

//更新

在应用程序的构建过程中,建立N:M关系会给你很多选择。例如,假设您希望能够搜索所有标记为“php”的博客文章。你可以这样做:

代码语言:javascript
运行
复制
SELECT `id`,`html_content` FROM `blogposts` INNER JOIN `blogposts_taxonomy` ON
`blogposts`.`id`=`blogposts_taxonomy`.`blogpost_id` INNER JOIN `blogposts_tags` ON
`blogposts_taxonomy`.`tag_id`=`blogposts_tags`.`id` WHERE `blogposts_tags`.`tag_name`="php";

这将返回所有被标记为"php“标签的博客。

干杯

票数 1
EN

Stack Overflow用户

发布于 2013-11-09 01:44:12

如果您真的想存储这样的数据,FIND_IN_SET mysql函数将是您的朋友。

在where子句中有两次函数。

但它将表现得可怕--有一个连接的桌子,一对多的风格,正如已经提出的是更好的想法。如果你有很多相同的标签,那么可以使用多到多的标签。通过'post2tag‘桌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19871313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档