sql >> Databasteknik >  >> RDS >> Mysql

Hur hämtar jag resultat som flerdimensionell array från mySQL och PHP?

Du kan inte hämta en flerdimensionell array enbart med mysql (åtminstone så vitt jag vet). Du kommer att behöva göra en del php-bearbetning. Det här låter inte så tokigt.

Uppdatera först din fråga för att välja svar samtidigt genom att gå med i quiz_answersquiz_questions med fråge-ID. Sedan, 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'));

Detta ger dig den array du vill ha efter att den är json-kodad.

Observera att du kommer att välja frågetext/id en gång per svar, vilket är ineffektivt. Du kan använda GROUP_CONCAT på svaren, men ovanstående kommer fortfarande att fungera nästan identiskt, du behöver bara dela upp svarssträngen.

Jag föreslår också att du använder PDO eller något annat omslag över mysql_* .



  1. MySQL String Last Index Of

  2. SQL TABELL

  3. SQL Server trunkering och 8192 begränsning

  4. SQL Server som kör övervakning av frågor