Você não pode recuperar uma matriz multidimensional puramente com mysql (pelo menos até onde eu sei). Você terá que fazer algum processamento php. Isso não soa muito louco.
Primeiro, atualize sua consulta para selecionar respostas ao mesmo tempo participando de
quiz_answers
em quiz_questions
usando o ID da pergunta. Então, no seu 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'));
Isso fornecerá a matriz que você deseja depois de codificada em json.
Observe que você acabará selecionando o texto/id da pergunta uma vez por cada resposta, o que é ineficiente. Você pode usar
GROUP_CONCAT
nas respostas, mas o acima ainda funcionará quase de forma idêntica, você só precisa dividir a string de resposta. Também sugiro que você use
PDO
ou algum outro wrapper sobre mysql_*
.