No puede recuperar una matriz multidimensional únicamente con mysql (al menos que yo sepa). Tendrás que hacer algo de procesamiento de php. Esto no suena demasiado loco.
Primero, actualice su consulta para seleccionar respuestas al mismo tiempo uniéndose a quiz_answers
en quiz_questions
utilizando el ID de la pregunta. Luego, en tu ciclo:
$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'));
Esto le dará la matriz que desea después de que esté codificada con json.
Tenga en cuenta que terminará seleccionando el texto/id de la pregunta una vez por cada respuesta, lo cual es ineficiente. Puedes usar GROUP_CONCAT
en las respuestas, pero lo anterior seguirá funcionando de manera casi idéntica, solo tiene que dividir la cadena de respuesta.
También te sugiero que uses PDO
o algún otro contenedor sobre mysql_*
.