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_*
.