php - 如何制作 n :1 multiple tags system for a blog & which database schema is better?

标签 php mysql database-schema

我想为博客及其文章创建一个标签系统; 作为问题的 stackoverflow 标记系统。

数据库结构

Table  - articles
Fields - article_id, article_title, article_content

Table  - article_tags
Fields - tag_id, article_id, tag_name

如果用户在输入中输入标签;假设他们输入了以下标签:

  1. php
  2. mysql
  3. 数据库结构

我想了解如何将以下标签转换为数组,然后将每个标签插入到一个新的值行中,如下所示。

article_Tags

    tag_id | article_id | tag_name
       1          1          php
       2          1          mysql
       3          1          database structure

我想让 PHP 用逗号分隔每个标记,并将其分别插入到新的行值中。

我该如何实现?我是否需要 foreach 和 explode() 来分解每个标签?


下面的表结构是不是比上面的好?

Table - article
Fields - article_id, article_title, article_content

Table - article_tags
Fields - article_id, tag_id

Table - tags
Fields - tag_id, tag_name

如果是这样,我如何将每个标签输入数据库,我是否需要 explode() 以及第一个表结构?

最佳答案

你的第二个结构更好。您以这种方式存储的数据更少。

最简单的方法是为标签表创建一个 CRUD,以在您的创建帖子表单上显示这些标签,并在提交时将所有内容相应地插入到您的文章和 article_tags 表中。

但您也可以让用户使用一些 JavaScript 直接从帖子表单创建标签,然后将这些标签插入到数据库中,然后再插入到文章和 article_tag 中。

请不要忘记,无论哪种方式,您都需要检查重复项。每个示例有 10 个不同的 php 标签是没有意义的。

关于php - 如何制作 n :1 multiple tags system for a blog & which database schema is better?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20033867/

相关文章:

php - symfony patten 正则表达式技巧

php - DQL 允许空连接吗?

mysql - 从一个选择查询插入多个表的查询

java - MySQL 语句取消计时器未能停止

javascript - Mongoose : Dynamically load different schema under one collection

php - 将用户表的架构从旧设计更改为新设计

php - 多个复选框内的 codeigniter

php - 如何使用PHP脚本处理ajax表单参数

php - 如何删除JSON中的对象?

mysql - `date` 是有效的 mysql 列名吗?