我正在开发一个项目,让用户能够编写帖子然后标记它。最后,其他用户进来并投票选出最佳帖子。
在我遇到标记挑战之前,一切都变得像魅力一样:如何找出处理它们的最简单方法?
我使用多对多关系为每个帖子分配了多个标签。但我在将它们插入数据库之前发现了一些困难。这些困难包括:'我怎么知道这个标签还没有存储在DB中?'(当然我把名字字段设置为UNIQUE,但是如果有人输入预先存储的标签,他将面临codeigniter错误,我不会我想让它显示出来。)..
简而言之,我提出了这个解决方案:
嗯,我知道这有点乱。特别适合在数组中循环,这可能会有点时间..所以,我问你们:) 我对么 .. ? 有没有更简单的方法..?
感谢。
答案 0 :(得分:0)
你可以这样做:
SELECT * FROM `tags` WHERE `name`=:name_1 OR `name=:name_2 ...
然后,您可以获取结果标记并将其从用户的标记数组中删除:
foreach ($user_tags as $tag) {
if (!in_array($tag, $db_tags)) {
$new_tags[] = $tag;
}
}
您只有两种查询方式,但我不知道如何保护此代码免受竞争条件的影响。