2012-07-02 3 views
0

get 배열을 사용하여 배열에서 호출하려고하지만 올바르게 포맷하는 방법이 작동하지 않습니다?배열이있는 배열에서 호출

if(isset($_GET["category"])){ 
    $cat = 'SELECT DISTINCT `Category` FROM `products`'; 
    $result = $mysqli->query($cat); 
    $i='0'; 
    while ($row = $result->fetch_array(MYSQLI_ASSOC)){ 
     $i++; 
     $Category = $row["Category"]; 
     $id = array($i => $Category); 
    } 
    $result->close(); 
    $query = 'SELECT * FROM products WHERE Category="'. $id[$_GET["category"]]. '" ORDER BY Code'; 
} 

답변

1

루프 내부에서 실수를 한 것으로 보입니다. 당신이 배열의 키에 값을 할당 할 경우, 당신은이를 교체해야이와

$id = array($i => $Category); 

:

$id[$i] = $Category; 

그렇지 않으면 $id 항상은 현재 키 - 값을 가진 새로운 배열을 것 쌍.

+0

이상한 일을 PHP 설명서의 지침을 사용하고 있습니다 : [function array] (http://nc.php.net/manual/en/function.array.php) –

+0

모든 루프 반복에서 배열은'$ id'의 이전 값을 대체했습니다. 결국에는 루프가 생성 한 키 - 값 쌍만 있습니다. BTW, [var_dump] (http://de2.php.net/manual/en/function.var-dump.php) 함수를 사용하여 변수의 내용을 표시 할 수 있습니다. while 루프 ('var_dump ($ id);') 이후에 이전 버전과 새로운 버전을 비교하면 차이점을 알 수 있습니다. – kch42

0

검색어가 잘못되었습니다.

$query = "SELECT * FROM products WHERE Category='". $id[$_GET["category"]]. "' ORDER BY Code"; 

사용하는 order by 절은 where 절 이후 여야합니다.