【问题标题】:PHP MYSQL: search word queryPHP MYSQL:搜索词查询
【发布时间】:2012-02-19 08:08:40
【问题描述】:

我需要提交查询以搜索具有特定标签的帖子。数据库中的单元格是这样写的:“有趣的技术好”,所以每个词都描述了一个标签。所以我写了这段代码是为了得到一个带有“有趣”标签的帖子。

'SELECT * FROM `posts` WHERE `post_tag` = "funny" ORDER BY `post_id` DESC LIMIT 50'

不幸的是,它没有给我任何结果。这里有什么问题?

【问题讨论】:

  • 您可以尝试 WHERE post_tag LIKE 'funny%' .. 这将显示您的记录在您的标签中以 'funny' 作为起始文本

标签: php mysql search tags


【解决方案1】:

使用 LIKE 关键字或以每条目 1 个标签的方式存储您的标签。

 SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50

这将找到包含其他标签的标签,因此搜索“java”也会找到“javascript”,

【讨论】:

    【解决方案2】:

    查询WHERE post_tag LIKE "%fun%" 也会匹配“funny”、“defunct”等。但你很幸运,因为 MySQL 也支持 perl 风格的正则表达式,你可以说

    WHERE post_tag RLIKE "\bfun\b"
    

    (确保 sql 引擎看到反斜杠)。这只会匹配“fun”作为一个完整的单词。

    【讨论】:

      【解决方案3】:

      试试这个。

      SELECT * FROM `posts` WHERE `post_tag` LIKE  "%funny%" ORDER BY `post_id` DESC LIMIT 50'
      

      【讨论】:

        【解决方案4】:
        'SELECT * FROM `posts` WHERE `post_tag` LIKE "%funny%" ORDER BY `post_id` DESC LIMIT 50' //OR to get tags starting with funny 'SELECT * FROM `posts` WHERE `post_tag` LIKE "funny%" ORDER BY `post_id` DESC LIMIT 50'

        参考:LIKE

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-12
          • 2011-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-18
          相关资源
          最近更新 更多