Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak pobrać wyniki jako wielowymiarową tablicę z mySQL i PHP?

Nie możesz pobrać wielowymiarowej tablicy wyłącznie za pomocą mysql (przynajmniej o ile wiem). Będziesz musiał przetworzyć php. To nie brzmi zbyt szalenie.

Najpierw zaktualizuj swoje zapytanie, aby wybrać odpowiedzi w tym samym czasie, dołączając do quiz_answers na quiz_questions używając identyfikatora pytania. Następnie w swojej pętli:

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

To da ci tablicę, którą chcesz po zakodowaniu w json.

Zauważ, że w końcu wybierzesz tekst/identyfikator pytania raz na każdą odpowiedź, co jest nieefektywne. Możesz użyć GROUP_CONCAT na odpowiedziach, ale powyższe nadal będzie działać prawie identycznie, wystarczy podzielić ciąg odpowiedzi.

Proponuję również użyć PDO lub jakieś inne opakowanie nad mysql_* .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać kopię zapasową bazy danych MySQL za pomocą MySQL Workbench?

  2. 5 najlepszych kursów online do nauki MySQL

  3. Dlaczego nie powinienem używać funkcji mysql_* w PHP?

  4. Zmień stół bez blokowania całego stołu

  5. Jak zainstalować MySQL z phpMyAdmin na Debianie 7?