Foreach MySQL 按类别加入

问题描述

**如何从连接数据库 foreach 以按类别显示食品。 谢谢你。 **

如何使用join从数据库中选择以按类别搜索结果

MysqL> SELECT * FROM categories;
+-----+-----------------+
| id  | categories      |
+-----+-----------------+
| 1   | Oven            |
| 2   | Pizza           |
| 3   | Salad           |
| 4   | Starter         |
| 5   | Coffee          |
| 6   | Softdrinks      |
+-----+-----------------+

MysqL> SELECT * FROM foods;
+------+----------------------+--------+--------------+
| id   | name                 | price  | category_id  | 
|+-----+----------------------+--------+--------------+
| 1816 | Acini                | 15     | 1            |
| 1817 | Wedding Soup         | 11     | 1            |
| 1818 | Pasta Campanelle     | 12     | 4            |
| 1819 | Chicken Noodle Soup  | 12     | 6            |
| 1820 | Pizza Valtellina     | 12     | 5            |
| 1821 | Cedar Planked Salmon | 11     | 3            |
| 1822 | Italian Sausage Soup | 12     | 3            |
| 1823 | Pasta Pappardelle    | 10     | 1            |
+------+----------------------+--------+--------------+

请问MysqL代码如何加入表格。

结果应该如下

$results = [
    'Oven' => [
        ['name' => 'Acini','price' => '15'],['name' => 'Wedding Soup','price' => '11'],['name' => 'Pasta Pappardelle','price' => '10']
    ],'Starter' => [
        ['name' => 'Pasta Campanelle','price' => '12']
    ],'Softdrinks' => [
        ['name' => 'Chicken Noodle Soup','Coffee' => [
        ['name' => 'Pizza Valtellina','Salad' => [
        ['name' => 'Cedar Planked Salmon',['name' => 'Italian Sausage Soup','price' => '12']
    ]
];

请帮忙。 提前谢谢你。

解决方法

可能会有所帮助:

$db = mysqli_connect("host","username","password","db_name");
$result = [];
$sql = 'SELECT foods.name,foods.price,categories.categories FROM foods JOIN categories ON categories.id = foods.category_id ORDER BY categories.categories';
$data = mysqli_query($db,$sql);
while($row = mysqli_fetch_array($data,MYSQLI_ASSOC)) {
    $result[$row['categories']][] = array('name' => $row['name'],'price' => $row['price']) ;
}
//output
var_dump($result);