如何使用MATCH AGAINST方法搜索MySQL数据库,该方法仅返回具有特定字段值的行?

时间:2012-08-14 22:36:47

标签: php mysql search match

我有一个MySQL表,其中一个字段是“category”,其中的值包括文章,研究,引号等。对于搜索表单,我有与这些类别对应的复选框,供用户选择,如果不是全部,则从中搜索。

现在,以下代码段用于不加选择地搜索整个表格(即,来自“类别”的行包括文章,研究,引用等。但是,如果一个人只选择“文章”,我将如何更改以下内容,“查询将仅返回具有相应值的字段”category“的行?

$category = $_GET["category"];
$query = "User-submitted query";
$search = mysql_query("SELECT title,body,
MATCH(title, body) 
AGAINST('$query' IN BOOLEAN MODE)
AS score FROM resources
WHERE MATCH(title, body) AGAINST ('$query' IN BOOLEAN MODE)");

我尝试在上面添加WHERE category = '$category'(在这种情况下,$ category类别为“文章”),但它不起作用。

BTW:我知道mysql / mysqli和安全用户输入问题。

2 个答案:

答案 0 :(得分:1)

我弄明白了这个问题。以下作品:

$category = $_GET["category"];
$query = "User-submitted query";
$search = mysql_query("SELECT title,body,
MATCH(title, body) 
AGAINST('$query' IN BOOLEAN MODE)
AS score FROM resources
WHERE MATCH(title, body) AGAINST ('$query' IN BOOLEAN MODE)
AND category = '$category'");

答案 1 :(得分:0)

您是否反对使用子查询?

SELECT title,body
FROM(

SELECT title,body,category
MATCH(title, body) 
AGAINST('$query' IN BOOLEAN MODE)
AS score FROM resources
WHERE MATCH(title, body) AGAINST ('$query' IN BOOLEAN MODE)

) x 
WHERE category = '$category'