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

标签 php mysql arrays

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

<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/>';
}

关于php - 从数组中的数据库中获取多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27733391/

相关文章:

mysql索引大小和重复问题

php - 如何从 MySql 获取给定开始和结束日期的结果?

php - SWFUpload上传脚本

php - Laravel 5.3 中不存在 App\Http\Controllers\Auth\LoginController 类

php - 仅执行多个 PDO 查询中的第一个?

C++ 字符串数组切片

ruby - 确定一个值是否存在于哈希数组中

php - 将HTML文件另存为PDF

php - 想要显示除特定用户之外的用户列表

javascript - 检查并转换 JavaScript 数组中的重复对象