Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie rufe ich Ergebnisse als mehrdimensionales Array von mySQL und PHP ab?

Sie können ein mehrdimensionales Array nicht nur mit MySQL abrufen (zumindest soweit ich weiß). Sie müssen etwas PHP-Verarbeitung durchführen. Das klingt nicht zu verrückt.

Aktualisieren Sie zunächst Ihre Abfrage, um gleichzeitig Antworten auszuwählen, indem Sie quiz_answers beitreten auf quiz_questions mit der Fragen-ID. Dann in Ihrer Schleife:

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

Dadurch erhalten Sie das gewünschte Array, nachdem es json-codiert wurde.

Beachten Sie, dass Sie am Ende den Fragetext/die ID einmal pro Antwort auswählen, was ineffizient ist. Sie können GROUP_CONCAT verwenden auf die Antworten, aber das obige funktioniert immer noch fast identisch, Sie müssen nur die Antwortzeichenfolge aufteilen.

Ich schlage auch vor, dass Sie PDO verwenden oder irgendein anderer Wrapper über mysql_* .