2012-12-18 5 views
1

내가 선택한 필터에 의해 일부 출력 데이터를 정렬하는 MySQL 쿼리를 실행하는 PHP 코드가 있습니다.문제가 하나 이상의 단어를 mysql 데이터베이스에서 정렬

내가 가진 문제는 1 단어 이상 필터링 할 때입니다. 즉, 색상으로 필터링하면 빨강, 노랑 등으로 잘 작동하지만 파랑 NAVY에는 적합하지 않습니다.

'"을 추가하면 충분할 것이라고 생각했지만 그렇지 않습니다.

<?php 
$colors = $con -> prepare("SELECT DISTINCT color_base1 FROM item_descr ORDER BY color_base1 ASC"); 
$colors ->execute(); 
while ($colorBoxes = $colors->fetch(PDO::FETCH_ASSOC)) 
{ 
echo "<input type='checkbox' class='regularCheckbox' name='color' value='".$colorBoxes[color_base1]."' /><font class='similarItemsText'> ".$colorBoxes[color_base1]."</font><br />"; 
} 
?> 

감사 :

여기에 내 현재 코드입니다!

+0

SELECT color_base1 FROM item_descr ORDER BY color_base1 ASC 

당신이 당신의 표에 해군을 vlue 있나요? –

+0

예, db에 있습니다. – samyb8

답변

0

배열 색인을 따옴표로 묶어야합니다.

변경 : $colorBoxes[color_base1]

사람 : $colorBoxes['color_base1']

Bonus points는 :

printf(
    "<input type='checkbox' class='regularCheckbox' name='color' value='%s' /><font class='similarItemsText'> %s</font><br />", 
    $colorBoxes['color_base1'], 
    $colorBoxes['color_base1'] 
); 

또한, 양식 데이터는 아마도 입력 name 필드에 공백이있는 경우 꽤 이상한 제출하는 것입니다. 거래가 무엇인지 확인하려면 양식을 제출 한 후 var_dump($_REQUEST)을 시도하십시오. 그러나 color_base1 입력란에 공백을 사용하지 않는 것이 좋습니다. 당신은 문제를 일으키는 SELECT DISTINCT 이 5 월을 사용하고 (이 파란색과 해군 구별한다)는 다른 방법 때문에이 두 단어에서 하나 개의 단어를 선택하기 때문에

0

당신의 SQL은 바로 보이는 코드는 바로도 보이지만, 더 좋고 권장됩니다. + ORDER BY을 수행하고 있으므로 을 사용하는 경우 여기에 DISTINCT이 필요하지 않습니다. 동일한 작업을 수행하기 때문입니다.

  • 당신의 다음 그들은 열 인덱스 열이 아닌 값으로 정렬됩니다 item_descr 유형 ENUM 또는 SET를 사용하는 경우.

이를 doint 시도 대신에 여기 DEMO SQL FIDDLE

관련 문제