【问题标题】:Search Each Word Of a Search Using PHP MYSQL Search Query使用 PHP MYSQL 搜索查询搜索搜索的每个单词
【发布时间】:2017-03-17 14:13:08
【问题描述】:


我想根据搜索栏中输入的关键字来获取记录。
假设我的 SQL 表的列中有以下 3 条记录

  1. 漂亮的小孩子。
  2. 动物园里漂亮的兔子。
  3. 天然水。

现在,如果搜索查询包含 Beautiful,它将返回前 2 条记录。
如果搜索查询包含Beautiful (anything),它将不返回任何内容。

我希望在这种情况下也显示前 2 条记录,因为它与上面搜索的查询中具有相同的词 beautiful

现在,我正在使用
SELECT * FROM table WHERE name LIKE '%value%' ORDER BY id ASC

是否有任何其他查询或方法可以实现此类结果?

【问题讨论】:

  • LIKE 'value%' 应该解决这个问题或使用不区分大小写的方法。
  • 不工作的兄弟。
  • 你在下面有答案;看到那个。

标签: php mysql sql search


【解决方案1】:

SELECT * FROM table WHERE (name LIKE '%value1%') OR (name LIKE '%value2%') ORDER BY id ASC

因此,您必须将搜索字符串拆分为单独的单词。

$str = yourinput;
$strarray = (explode(" ",$str));
$query = "SELECT * FROM table WHERE ";
Foreach($strarray as $key=>$value){
If($key > 0){
$query = $query . "OR";
}
$query = $query . " (name LIKE '%" . $value . "%') ";
}
$query = $query . "ORDER BY id ASC";

【讨论】:

  • 兄弟,感谢您的回答。兄弟,告诉我如果用户写了美丽的(某事),那么基于上述查询的 php 条件将是什么?意味着如果用户只写了一个单词,那么?如果有人写了多个单词呢?
  • 有不同的方法来解决这个问题。如果用户输入了多个关键字,您需要将它们拆分,可能会拆分为一个数组。然后,您可以为每个关键字添加 OR 子句,或者为每个关键字运行多个查询,将结果添加到数组中,这是您的输出。
  • 也许这会为你指明正确的方向w3schools.com/php/func_string_explode.asp
  • 你们中的任何一个都可以吗:) 请为我写一个短代码。
  • 我已经为我的答案添加了一个可能的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多