2012-07-27 133 views
0

我有2个数据库表:categoriessub_categoriessub_categories表链接到categories表按类别ID cat_id来自mysql结果的多维数组

在php中,我想要打印父类别和属于它的所有子类别。是否有可能通过创建一个从 mysql查询多维数组?

结果举例:

array 
(
    "Category 1"=>array 
    (
    "Sub-category", 
    "Sub-category", 
    "Sub-category" 
), 
    "Category 2"=>array 
    (
    "Sub-category" 
), 
    "Category 3"=>array 
    (
    "Sub-category", 
    "Sub-category", 
    "Sub-category" 
) 
); 

我的查询返回仅有1为每个类别的子类别:

SELECT `categories`.`cat_title`, `sub_categories`.`sub_cat_title` 
FROM (`categories`) 
LEFT JOIN `sub_categories` 
ON `sub_categories`.`cat_id` = `categories`.`cat_id` 
GROUP BY `categories`.`cat_title` 

回答

3

的MySQL不会返回一个数组,它只会返回行,但你可以很容易地用PHP创建数组..只是做这个

<?php 
    $db = new mysqli('host','user','password','database'); 
    $query = "SELECT c.cat_title, s.sub_cat_title 
      FROM categories c 
      LEFT JOIN sub_categories s USING (cat_id) 
      ORDER BY cat_title"; 
    $result = $db->query($query); 
    while($row = $result->fetch_assoc()){ 
    $cats[$row['cat_title']][] = $row['sub_cat_title']; 
    }   

?> 
+0

对不起类型化小组,由,意味着为了你你每组只能得到一行 - 尽管你也不需要这样做,但php对数组很酷,它会自动将下一个索引插入到多维数组中,并创建一个新的第一维,如果它不存在 – dano 2012-07-27 02:14:57

1

尝试使用ORDER BY来代替。

ORDER BY `categories`.`cat_title`, `sub_categories`.`sub_cat_title`