sql >> Database >  >> RDS >> Mysql

Hoe haal ik resultaten op als multidimensionale array uit mySQL en PHP?

Je kunt een multidimensionale array niet puur met mysql ophalen (tenminste voor zover ik weet). Je zult wat php-verwerking moeten doen. Dit klinkt niet zo gek.

Werk eerst uw zoekopdracht bij om tegelijkertijd antwoorden te selecteren door deel te nemen aan quiz_answers op quiz_questions met behulp van de vraag-ID. Dan, in uw lus:

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

Dit geeft je de array die je wilt nadat het json-gecodeerd is.

Houd er rekening mee dat u de vraagtekst/-ID één keer per antwoord zult selecteren, wat inefficiënt is. U kunt GROUP_CONCAT . gebruiken op de antwoorden, maar het bovenstaande werkt nog steeds bijna identiek, je hoeft alleen de antwoordreeks te splitsen.

Ik raad je ook aan om PDO . te gebruiken of een andere wrapper over mysql_* .



  1. Hoe opeenvolgende verzamelingen records in MySQL op te nemen?

  2. Zoek en vervang een gedeelte van de tekst in een veld met MySQL

  3. Best practices voor het ontwerpen van meertalige databases

  4. Hoe de mediaan te berekenen in MySQL