2

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

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

$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 将是“Articles”),但它不起作用。

顺便说一句:我知道 mysql/mysqli 和安全用户输入问题。

4

2 回答 2

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'");
于 2012-08-14T23:10:24.917 回答
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'
于 2012-08-14T23:08:22.287 回答