【问题标题】:Search Multiple Words PHP搜索多个单词 PHP
【发布时间】:2015-05-24 21:15:43
【问题描述】:

更新:

我更进一步:

$query = mysql_real_escape_string($_POST['search']); 
$keywords = explode(" ", $query); 
foreach ($keywords as $keys) { 
$search_sql .= " AND Name LIKE '%$keys%' "; 
}

但它仍然没有返回任何内容。

我找不到这个,因为我不确定如何措辞。基本上,当用户查询我的数据库时,我想退回卡片,但如果用户遗漏了中间的一个单词(比如他查询 Elesh Norn Foil,因为他们没有查询 Elesh Norn,Grand Cenobite Foil 正是 Grand Cenobite使我的程序跳闸并且什么也不返回)。

所以:

-Johnny 输入“Elesh Norn”,他返回“Elesh Norn,Grand Cenobite”和“Elesh Norn,Grand Cenobite Foil”

-但是,如果 Johnny 输入“Elesh Norn Foil”,则返回“未找到卡片!”匹配

这是我的查询语句:

SELECT Name, Amount, CardID FROM modernmasters WHERE Name LIKE '%".$_POST['search']."%'

那么我必须将我的查询更改为什么,这样我的搜索才不会出错?

【问题讨论】:

  • 在空间上分割搜索词,n 搜索每个用 OR - 或使用全文搜索
  • 使用 OR 搜索会返回各种可能不相关的结果。我会使用 AND。
  • @HoboSapiens 但是 FOIL 会在他想要的第一场比赛中失败
  • 谢谢你们,我会通过做爆炸来做到这一点,或者我该怎么做?
  • 你现在真的不应该使用mysql_函数。

标签: php mysql search


【解决方案1】:

试试这个。希望它会有所帮助。

$search_sql = "SELECT Name, Amount, CardID FROM modernmasters WHERE";
$query = mysql_real_escape_string($_POST['search']); 
$keywords = explode(" ", $query); 
$keyCount = 0;
foreach ($keywords as $keys) { 
    if ($keyCount > 0){
        $search_sql .= " AND";
    }
    $search_sql .= " Name LIKE '%$keys%'"; 
    ++$keyCount;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2017-04-12
    • 2014-11-18
    相关资源
    最近更新 更多