sql >> Database teknologi >  >> RDS >> Mysql

Hvordan henter jeg resultater som multidimensional array fra mySQL og PHP?

Du kan ikke hente et multidimensionelt array udelukkende med mysql (i hvert fald så vidt jeg ved). Du bliver nødt til at lave noget php-behandling. Det lyder ikke for tosset.

Først skal du opdatere din forespørgsel for at vælge svar på samme tid ved at deltage i quiz_answersquiz_questions ved hjælp af spørgsmåls-id'et. Så i din 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'));

Dette vil give dig det array, du ønsker, efter det er json-kodet.

Bemærk, at du ender med at vælge spørgsmålets tekst/id én gang for hvert svar, hvilket er ineffektivt. Du kan bruge GROUP_CONCAT på svarene, men ovenstående vil stadig fungere næsten identisk, du skal bare dele svarstrengen.

Jeg foreslår også, at du bruger PDO eller en anden indpakning over mysql_* .



  1. MySQL join med where-klausul

  2. Bland en streng med mysql/sql

  3. MySQL blander Damerau–Levenshtein Fuzzy med Like Wildcard

  4. Udfordringer ved at skalere Moodle MySQL-databasen