php
  • sql
  • arrays
  • get
  • 2012-07-02 4 views 0 likes 
    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.

    Смежные вопросы