Как мне получить результаты в виде многомерного массива из mySQL и PHP?

Я только начинаю изучать более продвинутый SQL вместе с PHP, и мне очень трудно понять, как запросить мою базу данных для викторины. Я строительство.

В конечном итоге я пытаюсь вернуть объект json со следующей структурой, которая дает мне список вопросов и все возможные ответы в виде многомерного массива:

{
    "questions":
        [
            {
                "question": "question text here",
                "answers":
                    [
                         { "answer": "answer text here", "points": 10 },
                         { "answer": "answer text here", "points": 20 },
                         { "answer": "answer text here", "points": 30 },
                         { "answer": "answer text here", "points": 40 }
                    ]
            },
            {
                "question": "question text here",
                "answers":
                    [
                         { "answer": "answer text here", "points": 10 },
                         { "answer": "answer text here", "points": 20 },
                         { "answer": "answer text here", "points": 30 },
                         { "answer": "answer text here", "points": 40 }
                    ]
            }
        ]
{

... из моих таблиц mySQL следующей структуры:

quiz

id | title
1  | quiz title here

quiz_question

id | quiz_id (FK) | question_text
1  |       1      | question text here
2  |       1      | question text here

quiz_answer

id | quiz_question_id (FK) | answer_text      | points
1  |            1          | answer text here |   10
2  |            1          | answer text here |   20
3  |            1          | answer text here |   30
4  |            1          | answer text here |   40

... со следующими внешними ключами:

quiz_question.quiz_id is FK to quiz.id
quiz_answer.quiz_question_id is FK to quiz_question.quiz_id

... с использованием следующего PHP (в его простейшей форме, которая в настоящее время возвращает только мои вопросы):

//query the db
$query = mysql_query("
    SELECT quiz_question.question_text
    FROM quiz_question
    JOIN quiz ON quiz.id = quiz_question.quiz_id
    WHERE quiz.id = 1;
");

$numrows = mysql_num_rows($query);
for ($i = 0; $i < $numrows; $i++) {
    $row = mysql_fetch_assoc($query);
    $quiz_data[$i] = array("question" => $row["question_text"]);
}

//echo JSON to page
$response = $_GET["jsoncallback"] . "(" . json_encode($quiz_data) . ")";
echo $response;

... и используя jQuery $ .getJSON () в моем JavaScript, который получает мой объект в формате JSON из моего PHP, который возвращает мне следующее:

[
    {"question":"question text here"},
    {"question":"question text here"}
]

Итак, мой вопрос, как я могу написать свои SQL и PHP для создания многомерный массив, как показано выше, вместо одного массива, как я сейчас возвращаюсь? Мне нужно выяснить, как включить вопросы и все связанные с ними ответы в виде многомерного массива.

5
задан PeeHaa 9 January 2012 в 16:52
поделиться