我有一个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和安全用户输入问题。
答案 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'