【问题标题】:Search returning no results in "reverse" order搜索以“反向”顺序返回没有结果
【发布时间】:2021-09-29 01:16:17
【问题描述】:

我有一个充满地址的数据库。 6 列(id、Name、Address、City、State、Zip、dt)

我的代码使用 ajax 运行以进行实时搜索。目前,我主要可以通过查询找到我要查找的内容。我遇到的问题是这个。如果我搜索“90210 Steve Jones”我没有得到任何结果,但如果我搜索“Steve Jones 90210”它会找到行。

这是我的代码:

$query = "SELECT * FROM db";

if($_POST['query'] != '')
{
    $postq = mysql_real_escape_string($_POST['query']);
    $query .= "WHERE CONCAT(Name,Address,City,State,Zip) LIKE '%".str_replace(' ', '%', $postq)."%'";
}


$query .= 'ORDER BY Name ASC, dt DESC ';

$statement = $connect->prepare($query);
$statement->execute();

任何帮助将不胜感激

【问题讨论】:

标签: php mysql ajax search


【解决方案1】:

其中一种解决方案是将搜索字符串用空格分割,然后进行多重比较操作

所以代码是:

<?php

if($_POST['query'] != '') {
$postq = mysql_real_escape_string($_POST['query']);

$pieces = explode(" ", $postq);

$index=0;
$substring="";

  while ($index < count($pieces))  {
     $substring .=" CONCAT(Name,Address,City,State,Zip) like '%" . $pieces[$index] . "%'"   ;

     if ($index !=count($pieces)-1){ 
         $substring .= " and "; 
     }

    $index++;
  }

$query = "SELECT * FROM db where ";
$query .=  $substring; 
$query .= ' ORDER BY Name ASC, dt DESC ';


$statement = $connect->prepare($query);
$statement->execute();
}

?>

【讨论】:

  • 谢谢!这正是我所需要的,但无法将我的大脑包裹起来。荣誉
【解决方案2】:

您可以按空格分解查询并测试每个空格。

$query = "SELECT * FROM db";
$where = [];
$values = [];
$ss = [];
if($_POST['query'] != '')
{ 
    foreach( explode(' ', $_POST['query']) as $p) {
      $postq = mysql_real_escape_string($p);
      $where[]= "(CONCAT(Name,Address,City,State,Zip) LIKE ? )";
      $values[] = "%$postq%";
      $ss[]='s';
    }
    $query .= " WHERE " . implode(" OR ", $where);
}


$query .= ' ORDER BY Name ASC, dt DESC ';

$statement = $connect->prepare($query);
if(count($values)>0) $statement->bind_param(implode('',$ss), ...$values);

$statement->execute();

【讨论】:

  • 我已经尝试实现此代码,但它根本没有检索到任何结果。很可能只是不同意此 ajax 代码的其余部分进行显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2018-01-08
  • 2016-04-30
相关资源
最近更新 更多