php - 在 PHP/MySQL 中使用标签进行搜索

标签 php mysql database tags

我正在努力寻找解决方案。我有以这种形式插入数据库的标签

mytags=第一个标签、第二个标签、第三个标签

在单个页面上,我需要根据我正在使用的这些标签显示相关项目

SELECT * FROM posts WHERE tags LIKE \"%$mytags%\" ORDER BY views DESC LIMIT 5"

然而,这并没有多大作用,因为它只搜索具有完全相同的标语(firsttag、secondtag、thirdtag)的帖子,而不搜索其标签包含其中一个标签(firsttag、anothertag 和anothertag)的帖子。

我想过分解 mytags,然后使用数组中的第一个标签进行搜索,但这效果不太好。

有人知道有效的搜索方法吗?

最佳答案

为什么不使用单独的表来保存帖子标签?我的意思是例如表“posts”、表“tags”和关系表“posts_tags”。 这是“帖子”的结构:

id
title
content

这是“标签”的结构:

id
tag_name

这是“posts_tags”的结构:

id
post_id
tag_id

这是“多对多”关系模型的方案。现在,您可以通过 JOIN 运算符轻松查找标签或/和帖子。

关于php - 在 PHP/MySQL 中使用标签进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7312163/

相关文章:

javascript - 在开发网站时,DreamWeaver 这样的 IDE 和 Drupal 这样的 CMS 有什么不同

mysql - 更新失败时运行 MySQL Insert

mysql - 您将如何缩短此查询?

database - 关系代数而不是 SQL

mysql - 在数据库列中存储结构化数据?

java - 如何在 Spring 中发布用户列表

php - 为什么我在后续下载特定文件时在 React Native 中收到 HTTP 412 状态错误?

php - 根据列值更新不同表中的不同列

c++ - 加密编译可执行文件中的常量字符串(例如密码)

php - mysql php 日期时间查询语法