【问题标题】:How to search a MySQL database for a specific string如何在 MySQL 数据库中搜索特定字符串
【发布时间】:2010-03-21 02:57:20
【问题描述】:

我正在尝试在我的网站上设置一个搜索功能,它只会返回与用户输入的关键字完全匹配的内容。因此,如果用户搜索“dog”,我不希望标题为“Doggy Style”的文章出现在搜索结果中(只是一个示例,我实际上并没有该名称的文章)。这当然就是这样做的:

SELECT * FROM articles WHERE article_title LIKE '%$searchQuery%'

$searchQuery 这里是一个取自用户输入表单的 PHP 变量。那么有没有办法只返回完全匹配?

【问题讨论】:

  • 您如何定义“精确”匹配、区分大小写和空格分隔(例如“the dog walk”而不是“doggy biscuit”或“Dog Eat Dog World”)?
  • 为什么不使用全文搜索? dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
  • @drohan 我会研究一下,看起来很有趣。

标签: php mysql search


【解决方案1】:
SELECT * FROM articles WHERE article_title = '$searchQuery'

将返回完全匹配。请注意从 'like' 到 '=' 的变化,并注意 % 符号已被删除。

同时确保永远不要使用来自用户表单的直接输入作为搜索 MySQL 数据库的输入,因为它不安全。

【讨论】:

    【解决方案2】:

    对于完全匹配,您可以这样做:

    SELECT * FROM articles WHERE article_title = '$searchQuery'
    

    在 MySql 中,非二进制字符串比较默认不区分大小写。

    【讨论】:

      【解决方案3】:
      SELECT * FROM articles WHERE article_title = '$searchQuery'
      

      【讨论】:

        【解决方案4】:

        我认为你应该这样做,它很完美。

        SELECT * FROM 文章 WHERE article_title='$searchQuery'

        执行(数组('%'.$searchQuery.'%'))

        【讨论】:

        • 这在 7 年后增加了哪些其他答案没有提供的内容?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        • 2021-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多