Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como recupero resultados como array multidimensional do mySQL e PHP?


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