2012-07-02 21 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手冊中的說明:[函數數組](http://nc.php.net/manual/en/function.array.php) –

+0

在每次循環迭代中,您都創建了一個新的數組,它取代了'$ id'的前一個值。所以最後你只有最後產生循環的鍵值對。順便說一句,你可以使用[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子句之後。