Du kan ikke hente et multidimensionelt array udelukkende med mysql (i hvert fald så vidt jeg ved). Du bliver nødt til at lave noget php-behandling. Det lyder ikke for tosset.
Først skal du opdatere din forespørgsel for at vælge svar på samme tid ved at deltage i quiz_answers
på quiz_questions
ved hjælp af spørgsmåls-id'et. Så i din loop:
$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'));
Dette vil give dig det array, du ønsker, efter det er json-kodet.
Bemærk, at du ender med at vælge spørgsmålets tekst/id én gang for hvert svar, hvilket er ineffektivt. Du kan bruge GROUP_CONCAT
på svarene, men ovenstående vil stadig fungere næsten identisk, du skal bare dele svarstrengen.
Jeg foreslår også, at du bruger PDO
eller en anden indpakning over mysql_*
.