使用SELECT * FROM col WHERE

时间:2012-07-08 00:15:12

标签: php mysql

我为关键字设置了数据库表。列是 -

  

keywordID | keyword1 | keyword2 | keyword3 | keyword4 | questionID

我想通过网站提供功能,以便用户查找并编辑问题。我认为目前最好的方法是让用户通过输入关键字来搜索问题。当我使用

SELECT * FROM keywords WHERE keyword1="first_search_word" 

它有效,但是当我尝试相同但

WHERE keyword2="first_search_word" 

即使它们存在,也不会返回任何内容。我也尝试使用OR(或||),但也找不到任何相关内容。

2 个答案:

答案 0 :(得分:4)

关键字1与关键字1有什么关系?

无论如何,这不是解决问题的正确方法。听起来你想要标签,每个问题都可以与多个标签相关联,对吧?这称为多对多关系,需要多个表。你需要:

  • 带有2列标签的表格,tagId和标签
  • 至少包含2列的问题表,questionId和问题
  • 一个tags_questions连接表,包含2列,tagId和questionId。

要查找具有特定标记的问题,请先在标记表中查找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的列,所以没有匹配就不足为奇了。当然,除非您在问题中输错了某些值 - 如果是这种情况,您应该重写您的问题