Не можете да извлечете многоизмерен масив само с mysql (поне доколкото знам). Ще трябва да направите известна php обработка. Това не звучи твърде лудо.
Първо актуализирайте заявката си, за да изберете отговори по едно и също време, като се присъедините към quiz_answers
на quiz_questions
използвайки идентификатора на въпроса. След това във вашия цикъл:
$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'));
Това ще ви даде желания масив, след като е кодиран в json.
Имайте предвид, че в крайна сметка ще избирате текста/идентификатора на въпроса веднъж за всеки отговор, което е неефективно. Можете да използвате GROUP_CONCAT
върху отговорите, но горното ще продължи да работи почти идентично, просто трябва да разделите низа за отговор.
Също така ви предлагам да използвате PDO
или някаква друга обвивка над mysql_*
.