sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo recupero los resultados como una matriz multidimensional de mySQL y PHP?

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_* .