Php 从具有数组的数组调用

Php 从具有数组的数组调用,php,sql,arrays,get,Php,Sql,Arrays,Get,我想使用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++;

我想使用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';
}

你的问题是错误的。使用

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

orderby
子句必须在
where
子句之后。

看来,您在循环中犯了一个错误。如果要为数组键指定值,则需要替换以下内容:

$id = array($i => $Category);
为此:

$id[$i] = $Category;

否则,
$id
将始终是一个只有当前键值对的新数组。

工作很奇怪,我使用的是php手册中的说明:在每次循环迭代中,您都创建了一个新数组,该数组替换了以前的
$id
值。因此,最后只有循环最后生成的键值对。顺便说一句,您可以使用该函数来显示变量的内容。在旧版本和新版本的while循环(
var_dump($id);
)之后执行此操作,您将看到差异。