Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để truy xuất kết quả dưới dạng mảng đa chiều từ mySQL và PHP?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham số ràng buộc cho mệnh đề WHERE IN với PDO

  2. Đếm số hàng không cách nhau trong vòng 10 giây

  3. Cách đặt lại / thay đổi dòng lệnh mật khẩu gốc MySql trong ubuntu linux

  4. Kiểu dữ liệu lý tưởng để sử dụng khi lưu trữ vĩ độ / kinh độ trong cơ sở dữ liệu MySQL là gì?

  5. MySQL &bộ lồng nhau:THAM GIA chậm (không sử dụng chỉ mục)