Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment récupérer les résultats sous forme de tableau multidimensionnel à partir de mySQL et PHP ?

Vous ne pouvez pas récupérer un tableau multidimensionnel uniquement avec mysql (du moins pour autant que je sache). Vous devrez faire un traitement php. Cela ne semble pas trop fou.

Tout d'abord, mettez à jour votre requête pour sélectionner des réponses en même temps en rejoignant quiz_answers sur quiz_questions en utilisant l'identifiant de la question. Ensuite, dans votre boucle :

$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'));

Cela vous donnera le tableau que vous voulez après avoir été encodé en json.

Notez que vous finirez par sélectionner le texte/l'identifiant de la question une fois pour chaque réponse, ce qui est inefficace. Vous pouvez utiliser GROUP_CONCAT sur les réponses, mais ce qui précède fonctionnera toujours presque à l'identique, il vous suffit de diviser la chaîne de réponse.

Je vous suggère également d'utiliser PDO ou un autre wrapper sur mysql_* .