Nie możesz pobrać wielowymiarowej tablicy wyłącznie za pomocą mysql (przynajmniej o ile wiem). Będziesz musiał przetworzyć php. To nie brzmi zbyt szalenie.
Najpierw zaktualizuj swoje zapytanie, aby wybrać odpowiedzi w tym samym czasie, dołączając do quiz_answers
na quiz_questions
używając identyfikatora pytania. Następnie w swojej pętli:
$quiz = array();
while ($row = mysql_fetch_assoc($result)) {
// you don't need to check num_rows
// fetch_assoc returns false after the last row, so you can do this
// which is cleaner
if (!isset($quiz[$row['question_id'])) {
$quiz[$row['question_id']] = array(
'question' => $row['question_text']
, 'answers' => array()
);
}
$quiz[$row['question_id']]['answers'][] = $row['answer_text'];
}
$full = json_encode(array('questions' => $quiz'));
To da ci tablicę, którą chcesz po zakodowaniu w json.
Zauważ, że w końcu wybierzesz tekst/identyfikator pytania raz na każdą odpowiedź, co jest nieefektywne. Możesz użyć GROUP_CONCAT
na odpowiedziach, ale powyższe nadal będzie działać prawie identycznie, wystarczy podzielić ciąg odpowiedzi.
Proponuję również użyć PDO
lub jakieś inne opakowanie nad mysql_*
.