【问题标题】:Search words by similarity in MySQL query [duplicate]在MySQL查询中按相似度搜索单词[重复]
【发布时间】:2017-03-05 04:41:05
【问题描述】:

所以我有这个 MySQL 查询:

$search = $_POST['search'];
$SQL = "SELECT * FROM `data` WHERE name='$search';
$rs = mysqli_query($dbconfig, $SQL);

我使用此代码将数据搜索到数据库中,其中包含表单提交的单词。问题是,只有当搜索词与数据库中的数据匹配时,查询才会显示结果。

例如,如果我有一个名为 advertisement.png 的文件,并且我搜索该文件,那么它只会在我搜索完全相同的单词时显示。

如果我搜索advertisement.png,它将显示advertisement.png,但如果我搜索advertisement,它将不会显示。我想要的是搜索与表单中提供的关键字相似的数据。

所以如果我搜索"advert",它会显示与这个词相似的结果。

提前致谢。

【问题讨论】:

  • 如果以下答案不能满足您的需求,您可能需要查看全文搜索。
  • 别忘了,在 SQL 中的任何输入中始终使用mysqli_real_escape_string。没有答案提到...
  • 是的,我使用 mysqli_real_escape_string。

标签: php mysql


【解决方案1】:

$sql = "select * from table_name name like '%search_key%' ";

这里的 % 表示您从左到右键入的所有关键字。任何关键字匹配它都会给你结果

【讨论】:

    【解决方案2】:

    还有一些用于比较字符串的 SQL 函数,例如 STRCMP(str1, str2),如果两个字符串相等则返回 0

    【讨论】:

      【解决方案3】:

      您在 secrch 值的开始和结束时使用 %。

      SELECT * FROM Customers WHERE Country LIKE '%land%';
      

      【讨论】:

        【解决方案4】:

        使用 LIKE 运算符和 % 作为两端如下

        $SQL = "SELECT * FROM `data` WHERE name LIKE '%$search%';
        

        【讨论】:

          【解决方案5】:

          您应该使用Like 运算符。 该代码将是

          $search = $_POST['search'];
          $SQL = "SELECT * FROM `data` WHERE name LIKE '%$search%';
          $rs = mysqli_query($dbconfig, $SQL);
          

          【讨论】:

            【解决方案6】:

            使用LIKE 运算符,末尾带有 %

            $search = $_POST['search'];
            $SQL = "SELECT * FROM `data` WHERE name LIKE '$search%';
            $rs = mysqli_query($dbconfig, $SQL);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-12-19
              • 2011-06-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多