2012-08-14 2 views
2

나는 MySQL 테이블을 가지고 있으며 필드 중 하나는 기사, 연구, 따옴표 등의 값을 포함하는 "카테고리"입니다. 검색 양식의 경우 사용자가이 카테고리를 선택하여 해당 카테고리를 선택할 수있는 확인란이 있습니다. 모두에서가 아니라 검색 할 수 있습니다.특정 필드 값이있는 행만 반환하는 MATCH AGAINST 메서드를 사용하여 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'에 추가하는 시도? 해당 값을"위 기사 ") 카테고리"쿼리는 필드가 행만 반환됩니다 "하지만했다

현재 : mysql/mysqli 및 보안 사용자 입력 문제가 있음을 알고 있습니다.

답변

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'"); 
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' 
관련 문제