从数组中的数据库中获取多行

Get multiple rows from database in array

通过下面的代码,我可以获取类别 ID 和该类别中的产品名称。回显类别 ID,并在其下方显示 select 以及该类别的产品名称。 现在看起来像这样:

<label>37</label> <!--category id-->
<select>
<option>product one</option>
<option>product two</option>
</select>

但我需要它来显示选项值产品 ID 中的类别名称。 像这样:

<label>category name</label>
<select>
<option value="1">product one</option>
<option value="2">product two</option>
</select>

如何在下面的代码中实现?

    $categories = array();
    $sql= "
SELECT a.id
     , a.name
     , a.active
     , b.id product_id
     , b.name product_name
     , b.flag_active
     , c.product_id
     , c.group_id 
  FROM products_groupnames a 
  JOIN products_group c 
    ON a.id = c.group_id 
  JOIN products_name b 
    ON b.id = c.product_id
 WHERE a.active=1 
   AND b.flag_active = 1
";
    $result = $mysqli->query($sql);
    echo "<h4>Select products by groups</h4>";
    while($row = $result->fetch_assoc()) {
        $categories[$row['id']][] = $row['product_name'];
    }

    foreach($categories as $key => $category){
        echo '<label>'.$key.'</label><br/>';
        echo '<select>';
        foreach($category as $item){
            echo "<option>".$item."</option>";
        }
        echo "</select><br/>";
    }

使您的 $categories 二维数组:

while ($row = $result->fetch_assoc()) {
    $cat = $row['id'];
    if (isset($categories[$cat])) {
        $categories[$cat]['products'][] = $row;
    } else {
        $categories[$cat] = array('name' => $row['name'], products => array($row));
    }
}

然后你可以使用嵌套循环显示它:

foreach ($categories as $category) {
    echo '<label>'.$category['name'].'</label>';
    echo '<select>';
    foreach ($category['products'] as $prod) {
        echo '<option value="'.$prod['product_id'].'">'.$prod['product_name'].'</option>';
    }
    echo '</select><br/>';
}