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

Come posso recuperare i risultati come array multidimensionali da MySQL e PHP?

Non è possibile recuperare un array multidimensionale esclusivamente con mysql (almeno per quanto ne so). Dovrai eseguire alcune elaborazioni php. Non sembra troppo folle.

Innanzitutto, aggiorna la tua query per selezionare le risposte contemporaneamente unendoti a quiz_answers su quiz_questions utilizzando l'ID domanda. Quindi, nel tuo ciclo:

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

Questo ti darà l'array che desideri dopo che è stato codificato in json.

Nota che finirai per selezionare il testo/id della domanda una volta per ogni risposta, il che è inefficiente. Puoi usare GROUP_CONCAT sulle risposte, ma quanto sopra funzionerà comunque in modo quasi identico, devi solo dividere la stringa di risposta.

Ti suggerisco anche di utilizzare PDO o qualche altro wrapper su mysql_* .