2012-07-27 131 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`