0
나는 체크 된 체크 박스를 기반으로 MySQL 결과를 필터링하려고한다. 내 쿼리는 첫 번째 검사에서 작동하지만 두 번째 필터에서는 아무 것도 반환하지 않습니다. 내 체크 박스 배열은 $ _POST [ 'country']입니다. GetSQLValueString 함수에서 쉼표로 구분 된 값 (- 영국, 프랑스)을 만들기 위해 내포합니다. 여러 선택 항목에 MySQL IN 절을 사용하고 있습니다.체크 박스 기반의 mysql 결과 필터링
가 나는 여러 국가 선택
if (isset($_POST['country_submit']) && $_POST['country'] != '') {
mysql_select_db($database_tub, $tub);
$query_trade = sprintf("
SELECT u.user_id,
u.contact_person,
u.company,
u.country,
u.pic_small,
u.website,
SUM(u.trader_or_bond = %s
AND t.user_id IS NOT NULL) AS count
FROM users u
LEFT JOIN trading t ON u.user_id = t.user_id
WHERE u.trader_or_bond = %s AND u.country IN(%s)
GROUP BY u.user_id
ORDER BY COUNT(t.user_id) DESC",
GetSQLValueString('trader', "text"),
GetSQLValueString('trader', "text"),
GetSQLValueString(implode(',', $_POST['country']), "text"));
$trade = mysql_query($query_trade, $tub) or die(mysql_error());
}
$ _POST [ 'country']는 (숫자가 아닌) 문자열입니까? 그렇다면'u.country IN (% s)'은'u.country IN (United Kingdom, France)'이 될 것이고 이것은 SQL의 오류입니다. 올바른 형식은'u.country IN ("United Kingdom", "France")'(이스케이프 처리됨)입니다. – Bobby
$ Quotes = " '".implode와 같은 작은 따옴표로 둘러싼 국가에서 사용할 수 있습니다. " ','", $ _POST [ 'country']). " '"; GetSQLValueString 함수를 통과하지 못하도록 IN ($ SingleQuotes) 절에 직접 넣어야합니다. – Jeff
빠른 예를 제공하면 어떤 의미인지 알 수 있습니까? – Jeff