0

我的数据库设置如下:

posts
    post_id; primary_key
    title;
    content;
    date;
tags
    tag_id; primary_key
    post_id;
    tag_name;

在这个博客中,我让用户发布他们自己的标签,比如 YouTube。所以可以说,我让用户在输入框中输入标签。例如,用户类型:Cat Dog Food。

我希望 PHP 将输入转换为数组并将其存储在这样的数据库中。

tags

    tag_id | post_id | tag_name
        1       1       Cat
        2       1       Dog
        3       1       Food

我认为我们可以使用explode()将该字符串转换为数组。但是,如何构建查询以按照我想要的方式存储到数据库中?

我基本上希望 PHP 分解每个标签,并将每个标签存储在单独的行中。

我正在使用 while 循环将每个标签拉到帖子中。

4

2 回答 2

1

使用foreach循环。IE

$string= "cat,lion";
$array= explode(",",$string);
foreach($array as $tag)
{
  mysql_query("INSERT INTO tags(tag_id,post_id,tag_name) VALUES('','$post_id','$tag')"); // run query to insert into tags table. $post_id is the corresponding post_id you have.
}
于 2013-04-18T04:08:21.173 回答
0

那么有一个不同的tags表来存储你的标签。它基本上有 2 列 - tag_id | tag_name。然后在两列上都有一个使用复合主键调用post_tags的表。post_id | tag_id

然后,您可以使用逗号分隔标签(而不是空格,以便标签可以根据需要包含空格),使用explode()数组foreach将它们先存储在tags表中,然后再存储在post_tags表中。

您可以tag_nametags表中设置唯一索引以防止重复标记,并且post_tags表中的主复合索引将防止任何重复post_id | tag_id行。

于 2013-04-18T04:08:40.170 回答