आप पूरी तरह से MySQL (जहां तक मुझे पता है) के साथ एक बहु-आयामी सरणी पुनर्प्राप्त नहीं कर सकते हैं। आपको कुछ PHP प्रोसेसिंग करनी होगी। यह बहुत पागल नहीं लगता।
सबसे पहले, quiz_answers
. में शामिल होकर एक ही समय में उत्तर चुनने के लिए अपनी क्वेरी को अपडेट करें quiz_questions
. पर प्रश्न आईडी का उपयोग करना। फिर, अपने लूप में:
$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'));
यह आपको वह सरणी देगा जो आप चाहते हैं जब यह json एन्कोडेड हो जाए।
ध्यान दें कि आप प्रत्येक उत्तर के लिए एक बार प्रश्न टेक्स्ट/आईडी का चयन करेंगे, जो अक्षम है। आप GROUP_CONCAT
का उपयोग कर सकते हैं उत्तरों पर, लेकिन उपरोक्त अभी भी लगभग समान रूप से काम करेगा, आपको बस उत्तर स्ट्रिंग को विभाजित करना होगा।
मेरा यह भी सुझाव है कि आप PDO
. का उपयोग करें या mysql_*
. पर कोई अन्य आवरण ।