2015-10-27 39 views
3

我有一個需求,我需要從MySQL查詢創建JSON文件。MySQL查詢到多維

的查詢如下:

  1. SELECT category_id, category, question, answer FROM table1;

  2. SELECT keywords FROM table2 WHERE category_id = table1.category_id;

我知道json_encode將數組JSON轉換,但我堅持有關如何將數據推從查詢到下面給出的以下多維數組結構。

<?php 
    array (
      0 => (array(
         'Category' => 'Category 1', 
         'question' => 'Question 1', 
         'answer' => 'Answer 1', 
         'keywords' => array (
           0 => 'tag 1', 
           1 => 'tag 2', 
           2 => 'tag 3', 
          ), 
        ) 
       ), 
      1 => (array(
         'Category' => 'Category 2', 
         'question' => 'Question 2', 
         'answer' => 'Answer 2', 
         'keywords' => array (
           0 => 'tag 4', 
           1 => 'tag 5', 
           2 => 'tag 6', 
           3 => 'tag 7', 
          ), 
        ) 
       ), 
); 
?> 

StackOverflow上的類似問題如下,但沒有解決我的問題。

  1. mysql-queries-to-multi-dimensional-php-array

  2. php-sorting-mysql-result-to-multi-dimensional-array

+0

什麼數據庫你使用的驅動程序。 mysql或mysqli –

+0

我正在使用mysqli – user4943000

回答

4

嘗試這樣

$sql = "SELECT t1.category_id, t1.category, t1.question, t1.answer, GROUP_CONCAT(t2.keywords ORDER BY t2.keywords ASC) AS key_words 
FROM table1 t1 
JOIN table2 t2 ON t2.category_id = t1.category_id"; 

$result = $mysqli->query($sql); 
while($row = $result->fetch_assoc()) { 
    $final_array['Category'] = $row['category']; 
    $final_array['question'] = $row['question']; 
    $final_array['answer'] = $row['answer']; 
    $final_array['keywords'] = explode(',',$row['key_words']); 
    $output[] = final_array; 
} 
print_r($output); 

櫃面你不使用的mysqli類,

使用mysqli_query()代替$mysqli->query();

mysqli_fetch_assoc()$result->fetch_assoc();

+0

感謝您的幫助。這就是我一直在尋找的......你從寫了大量的代碼 – user4943000

+0

救了我,你可以標記它是正確的,如果它解決了你的問題.. –

0

你必須使用JOIN

SELECT t.category_id, t.category, t.question, t.answer 
FROM table1 t 
LEFT JOIN keywords k 
ON k.category_id=t.category_id 
在此之後

,使用mysql_fetch_assoc()

然後Json_encode();