【发布时间】:2013-10-31 08:17:03
【问题描述】:
MYSQL可以做下吗?
我的条款 = a b c
我的查询 = SELECT * FROM pages WHEREcontentCONTAINS (a AND b AND c)
我需要在一个页面(搜索者)中使用多个术语进行查询。如果我有一个带有"1a2b3c" 的单元格,则必须对其进行过滤,如果其他单元格有"1a2b4d9i",则不得过滤第二个单元格。
另外,如果可能的话,我想按单词过滤。像"1a2b3c" --> "1 a 2 b 3 c",如果它加入的文本不会过滤。
我测试了这段代码
$sql = mysql_query("SELECT * FROM pages WHERE "
."(`title` LIKE '%$s%' OR "
."`title` LIKE '%$s' OR "
."`title` LIKE '$s%' OR"
."`content` LIKE '%$s%' OR "
."`content` LIKE '%$s' OR "
."`content` LIKE '$s%') "
."AND `name` != 'inicio' "
."AND `name` != 'contactenos' "
."AND `name` != '404' "
."AND `name` != '403' "
."AND `name` != 'login'");
使用一个值效果很好,但使用 2 个或更多值就找不到东西了。
我还尝试了(a,b,c) 和a|b|c 与AGAINST、REGEX 和其他,但我无法使其工作。
编辑 1:
如果我搜索“foo bar”并且我的 php 代码将其转换为数组,我该如何在 MYSQL 上编写?如果我搜索 "foo bar" 并且我的文本是 "the foo bar is awesome" 而其他文本是 "the foo is worst" ,我需要只打印第一个。
【问题讨论】: