将最近的字符串与特定字符串匹配

时间:2016-04-14 18:25:58

标签: php string-matching

当用户搜索图书的标题时,我应该使用什么样的搜索算法来提供结果?

如果存在一本书应该返回标题,否则必须显示与其相近的书名。

第一种情况更容易搜索字符串。我需要如何解决大多数网站使用的第二种情况。

books表包含字段类别,类和标题。我已经尝试了下面的代码,当我给出确切的标题时,我得到的结果我希望系统给出密切相关的标题。

$title=isset($_GET['title'])?$_GET['title']:NULL;
      //$code=isset($_GET['code'])?$_GET['code']:NULL;
      $class=isset($_GET['class'])?$_GET['class']:NULL;
      $cat=isset($_GET['category'])?$_GET['category']:NULL;
      if(isset($title))
      $qry="select * from books where quantity>0 and title='$title' ";
      else{
          $qry="select * from books where quantity>0 ";
          if(isset($class)) $qry.=" and class='$class' ";
          if(isset($cat))   $qry.=" and category='$cat' ";
      }

1 个答案:

答案 0 :(得分:1)

好吧,首先我建议使用预准备语句来避免通过当前代码注入SQL,但在SQL中使用LIKE运算符应该适用于第二种情况。

更改

`select * from books where quantity > 0 and title = '$title'`

`select * from books where quantity > 0 and title LIKE '%$title%'`

这样做还会检查单词周围是否缺少字母。因此,如果标题等于“兔子”,则“白兔”,“兔子”和“兔子”都将成为结果。

P.S。空白无需任何费用