【问题标题】:Filter a search of a database table in MySQL+PHP to get per search the closest result在 MySQL+PHP 中过滤数据库表的搜索以获取每次搜索最接近的结果
【发布时间】:2015-07-20 07:40:59
【问题描述】:

这是我的代码片段,它们返回所有记录,而我希望只返回最接近的匹配项

  if (isset($_POST['name_query'])){                       
      if(preg_match("/^[ 0-99 a-zA-Z]+/", $_POST['name_query'])) 
            $sql="SELECT  client_id, id_num, name, surname FROM clients WHERE   name LIKE '%" . $name_query."%' " ; 

  else if(isset($_POST['surname_query'])){
      if(preg_match("/^[ 0-99 a-zA-Z]+/", $_POST['surname_query'])){ 
            $sql="SELECT  client_id, id_num, name, surname FROM clients WHERE   surname LIKE '%" . $surname_query."%' " ; 

  elseif (isset($_POST['id_query'])){
      if(preg_match("/^[ 0-99 ]+/", $_POST['id_query'])){ 
            $sql="SELECT  client_id, id_num, name, surname FROM clients WHERE   client_id LIKE '%" . $id_query."%' " ; 

【问题讨论】:

  • 您只需要确定“更接近的匹配”是什么意思,然后将其用作ORDER BY

标签: php html mysql apache xampp


【解决方案1】:

您可以使用 like 的查询 - 我在我们的 Joomla 页面中使用它来进行自定义搜索。在这个查询中,我使用“searchword”作为我们要搜索的词。

CEIL((LENGTH(title)-LENGTH(REPLACE(LOWER(title),LOWER('searchword'),'')))/LENGTH('searchword')*10+(LENGTH(introtext)-LENGTH( REPLACE(LOWER(introtext),LOWER('searchword'),'')))/LENGTH('searchword')*1) AS 分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 2013-02-02
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    相关资源
    最近更新 更多