我为关键字设置了数据库表。列是 -
keywordID | keyword1 | keyword2 | keyword3 | keyword4 | questionID
我想通过网站提供功能,以便用户查找并编辑问题。我认为目前最好的方法是让用户通过输入关键字来搜索问题。当我使用
SELECT * FROM keywords WHERE keyword1="first_search_word"
它有效,但是当我尝试相同但
时WHERE keyword2="first_search_word"
即使它们存在,也不会返回任何内容。我也尝试使用OR
(或||
),但也找不到任何相关内容。
答案 0 :(得分:4)
关键字1与关键字1有什么关系?
无论如何,这不是解决问题的正确方法。听起来你想要标签,每个问题都可以与多个标签相关联,对吧?这称为多对多关系,需要多个表。你需要:
要查找具有特定标记的问题,请先在标记表中查找tagId。然后做一个SELECT questionId from tags_questions where tagId = $tagId
。要根据关键字而不是特定标记进行查找,您可以执行SELECT questionId FROM tags_questions WHERE tagId IN (SELECT tagId FROM tags WHERE tag LIKE "%{$keyword}%")
。
答案 1 :(得分:1)
当我使用
时
SELECT * FROM keywords WHERE keyword1="first_search_word"
它有效,但是当我尝试相同但
时
WHERE keyword2="first_search_word"
它不会返回任何
但你也说
列是keywordID,keyword1,ky2,ky3,ky4,questionID
所以你实际上没有名为keyword2
的列,所以没有匹配就不足为奇了。当然,除非您在问题中输错了某些值 - 如果是这种情况,您应该重写您的问题