Bạn không thể truy xuất mảng đa chiều hoàn toàn bằng mysql (ít nhất là theo tôi biết). Bạn sẽ phải thực hiện một số xử lý php. Điều này nghe có vẻ không quá điên rồ.
Trước tiên, hãy cập nhật truy vấn của bạn để chọn câu trả lời cùng lúc bằng cách tham gia quiz_answers
trên quiz_questions
bằng cách sử dụng ID câu hỏi. Sau đó, trong vòng lặp của bạn:
$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'));
Điều này sẽ cung cấp cho bạn mảng bạn muốn sau khi nó được mã hóa json.
Lưu ý rằng bạn sẽ chọn văn bản / id câu hỏi một lần cho mỗi câu trả lời, điều này không hiệu quả. Bạn có thể sử dụng GROUP_CONCAT
trên các câu trả lời, nhưng phần trên vẫn hoạt động gần như giống nhau, bạn chỉ cần tách chuỗi câu trả lời.
Tôi cũng khuyên bạn nên sử dụng PDO
hoặc một số trình bao bọc khác trên mysql_*
.