我的数据库设置如下:
posts
post_id; primary_key
title;
content;
date;
tags
tag_id; primary_key
post_id;
tag_name;
在这篇博客中,我让用户发布自己的标签,例如YouTube。 所以我要说,我让用户在输入框中输入标签。 例如,用户类型: 猫狗食品。
我希望PHP将输入转换为数组并将其存储在数据库中。
tags
tag_id | post_id | tag_name
1 1 Cat
2 1 Dog
3 1 Food
我认为我们可以使用explode()将该字符串转换为数组。 但是,如何构建我的查询以我想要的方式存储到数据库中?
我基本上希望PHP打破每个标记,并将每个标记存储在一个单独的行中。
我正在使用while循环将每个标签拉入post btw。
答案 0 :(得分:1)
使用foreach
循环。即
$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.
}
答案 1 :(得分:0)
有一个不同的tags
表来存储你的标签。它基本上有两列 - tag_id | tag_name
。然后有一个名为post_tags
的表post_id | tag_id
,其中两列都有复合主键。
然后你可以在逗号上打破标记(而不是空格,以便标记可以有空格),在数组上使用explode()
和foreach
将它们存储在{{首先是表格,然后是tags
表格。
您可以在post_tags
表中的tag_name
上拥有唯一索引以防止重复标记,tags
表中的主要复合索引将阻止任何重复的post_tags
行。