Du kan inte hämta en flerdimensionell array enbart med mysql (åtminstone så vitt jag vet). Du kommer att behöva göra en del php-bearbetning. Det här låter inte så tokigt.
Uppdatera först din fråga för att välja svar samtidigt genom att gå med i quiz_answers
på quiz_questions
med fråge-ID. Sedan, 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'));
Detta ger dig den array du vill ha efter att den är json-kodad.
Observera att du kommer att välja frågetext/id en gång per svar, vilket är ineffektivt. Du kan använda GROUP_CONCAT
på svaren, men ovanstående kommer fortfarande att fungera nästan identiskt, du behöver bara dela upp svarssträngen.
Jag föreslår också att du använder PDO
eller något annat omslag över mysql_*
.