sql >> Databáze >  >> RDS >> Mysql

Jak získám výsledky jako vícerozměrné pole z mySQL a PHP?

Nemůžete získat vícerozměrné pole čistě pomocí mysql (alespoň pokud vím). Budete muset provést nějaké zpracování php. To nezní příliš bláznivě.

Nejprve aktualizujte svůj dotaz tak, aby zároveň vybíral odpovědi, a to spojením quiz_answers na quiz_questions pomocí ID otázky. Pak ve smyčce:

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

Tím získáte požadované pole po zakódování json.

Všimněte si, že nakonec vyberete text/id otázky jednou pro každou odpověď, což je neefektivní. Můžete použít GROUP_CONCAT na odpovědi, ale výše uvedené bude stále fungovat téměř identicky, jen musíte rozdělit řetězec odpovědí.

Také vám doporučuji použít PDO nebo nějaký jiný obal přes mysql_* .



  1. 4 způsoby, jak nahradit NULL jinou hodnotou v MySQL

  2. Jak získat poslední den v měsíci v Oracle

  3. codeigniter mysql left join include select

  4. SQLite JSON_GROUP_ARRAY()