1.使用JOIN
做,在单个查询(最佳解决方案): -
$query = "Select Dishes.*,Category.id as cat_id from Category LEFT JOIN Dishes on Dishes.cat_id = Category.id";
$Listings = $mysqli->query($query);
$AllDishes = array();
while($row = $Listings->fetch_assoc()) {
$AllDishes[$row['cat_id']][] = array(
'id' => $row['id'],
'Name' => $row['Name'],
'Description' => $row['Description'],
'cat_id' => $row['cat_id'],
'Price' => $row['Price'],
'ImagePath' => $row ['ImagePath']
);
}
print_r($AllDishes);
如果你想在你的编码方式做那么: -
2.Distinguish他们基于类别的id
: -
$query = "Select id from Category";//change column name
$Id = $mysqli->query($query);
while($row = $Id->fetch_assoc()) {
$idlist[] = $row['id'];
}
foreach ($idlist as $id){
$query = "SELECT * from Dishes where Dishes.cat_id = '$id'";
$Listings = $mysqli->query($query);
while($row = $Listings->fetch_assoc()) {
$AllDishes[$id][] = array(
'id' => $row['id'],
'Name' => $row['Name'],
'Description' => $row['Description'],
'cat_id' => $row['cat_id'],
'Price' => $row['Price'],
'ImagePath' => $row ['ImagePath']
);
}
}
3.Distinguish他们基于类别的name
: -
$query = "Select id,category_name from Category";//change column name
$Id = $mysqli->query($query);
while($row = $Id->fetch_assoc()) {
$idlist[] = $row;
}
foreach ($idlist as $id){
$id = $id['id'];
$category_name = $id['category_name']; //change column-name
$query = "SELECT * from Dishes where Dishes.cat_id = '$id'";
$Listings = $mysqli->query($query);
while($row = $Listings->fetch_assoc()) {
$AllDishes[$category_name][] = array(
'id' => $row['id'],
'Name' => $row['Name'],
'Description' => $row['Description'],
'cat_id' => $row['cat_id'],
'Price' => $row['Price'],
'ImagePath' => $row ['ImagePath']
);
}
}
注: - 请更改列名在第三个解决方案中(因为我不知道你需要存储什么列名称类别名称)。
什么是您用来保存类别名称的字段?请告诉 –
您的问题出现在'$ AllDishes [] ='中,因为您不断为每个类别添加“$ AllDishes”变量。您必须为每次迭代“更改”存储变量。 – insider