Chuyển đổi kết quả mysql thành json

Để chuyển đổi trực tiếp kết quả truy vấn MySQL thành đối tượng hoặc mảng JSON, chúng ta cần sử dụng các hàm MySQL như concat[], concat_ws[] và group_concat[]

Trước khi xem demo bên dưới, chúng ta cần biết chi tiết khác nhau giữa concat[] & concat_ws[] và group_concat[] của MySQL, để sau đó chúng ta có thể hiểu tại sao chúng ta cần sử dụng chúng

dữ liệu thử nghiệm

----------------------------------
studentId | firstName | lastName |
----------------------------------
1         | Mike      | Bush     |
2         | Joshua    | Bush     |
3         | Rudy      | Lynn     |
4         | George    | Mandy    |
----------------------------------
  • concat[]. thêm hai hoặc nhiều biểu thức lại với nhau.
    Ví dụ 1.
    SELECT CONCAT[firstName, lastName]
    FROM students
    WHERE studentId = 2
    
    Đầu ra.
    JoshuaBush
    Ví dụ 2.
    SELECT CONCAT["Today", "is", "warm"];
    Đầu ra.
    Todayiswarm
    LƯU Ý. không có dấu phân cách, mọi thứ sẽ được kết hợp nguyên trạng.
  • concat_ws[]. giống như concat[] nhưng với tham số bổ sung, '_ws' là viết tắt của 'có dấu phân cách', vì vậy chúng ta phải xác định một tham số [chỉ chuỗi/biểu thức đầu tiên] làm dấu phân cách.
    Ví dụ 1.
    SELECT CONCAT_WS[',', firstName, lastName] as student
    FROM students
    
    Đầu ra.
    --------------
    student      |
    --------------
    Mike,Bush    |
    Joshua,Bush  |
    Rudy,Lynn    |
    George,Mandy |
    --------------
    
    Ví dụ 2.
    SELECT CONCAT_WS[" - ", "Today", "is", "warm"];
    Đầu ra.
    Today - is - warm
  • group_concat[]. chỉ trả về một hàng là một chuỗi có giá trị NON-NULL được nối từ một nhóm.
    Ví dụ 1.
    SELECT GROUP_CONCAT[firstName, lastName]
    FROM [
      SELECT firstName, lastName
      FROM students
    ] t1
    
    Đầu ra.
    SELECT CONCAT[firstName, lastName]
    FROM students
    WHERE studentId = 2
    
    0LƯU Ý. dấu phân cách mặc định cho mỗi hàng là ',' nhưng nếu chúng ta muốn sử dụng dấu phân cách khác thì chúng ta phải xác định nó bằng từ khóa 'dấu phân cách'.
    Ví dụ 2.
    SELECT CONCAT[firstName, lastName]
    FROM students
    WHERE studentId = 2
    
    1Đầu ra.
    SELECT CONCAT[firstName, lastName]
    FROM students
    WHERE studentId = 2
    
    2

Sau khi hiểu được sự khác biệt giữa 3 hàm đó, chúng ta có thể bắt đầu chuyển đổi truy vấn MySQL sang JSON như ví dụ bên dưới

Nói chung, hầu hết các ứng dụng PHP đều hoạt động với MySQL dưới dạng cơ sở dữ liệu phụ trợ và trong PHP, chúng ta có thể trích xuất dữ liệu thông qua lớp MySQLi. Khi nghĩ về JSON với PHP và MySQL, nó có thể khá khó khăn. Đây là lý do chính xác để viết hướng dẫn này, để cuối cùng làm sáng tỏ chủ đề

Sau khi chạy truy vấn và lấy dữ liệu từ tập kết quả MySQL, bạn có thể chuyển đổi dữ liệu thành JSON bằng hàm PHP có tên json_encode[]. Hàm gốc này không yêu cầu lặp qua dữ liệu và là hàm một dòng có vẻ rõ ràng trong mã của bạn

điều kiện tiên quyết

Để bắt đầu với hướng dẫn này về cách chuyển đổi dữ liệu từ Công cụ MySQL sang JSON, bạn phải có sẵn môi trường sau

  • >= Phiên bản PHP 5. 0. 7 Đã cài đặt
  • Đã cài đặt MySQL
  • Một máy chủ web [Apache]
  • Một IDE, tốt nhất là một IDE có thể xử lý PHP độc đáo để dễ nhìn hơn

Nếu bạn đã có sẵn những thứ này, thì chúng ta có thể tiếp tục và bước vào phần thú vị

Tìm nạp MySQL liên kết với JSON

Chúng ta hãy bắt đầu với ví dụ đầu tiên, tạo JSON từ hàm MySQLi, fetch_assoc. Đoạn mã quan trọng trong tập lệnh sau là json_encode, đây là nơi điều kỳ diệu xảy ra

SELECT CONCAT[firstName, lastName]
FROM students
WHERE studentId = 2
3

Đoạn mã trên đã in đoạn mã sau, được định dạng JSON thành trang

SELECT CONCAT[firstName, lastName]
FROM students
WHERE studentId = 2
4

Một công cụ web rất hay để luôn kiểm tra xem JSON của bạn có được định dạng đúng hay không là trang web có tên JSONLint. Tôi thực sự khuyên bạn nên sử dụng nó mỗi khi bạn tạo JSON vì nó không chỉ xác thực dữ liệu cho bạn mà còn kiểm tra lỗi và cho bạn biết chính xác vị trí của dòng sai. Tất nhiên, điều này là tuyệt vời để gỡ lỗi. Xem bên dưới JSONLinter đang hoạt động

Mảng tìm nạp MySQL sang JSON PHP

Sử dụng mảng tìm nạp để chuyển đổi thành JSON có thể hơi quá, tùy thuộc vào những gì bạn muốn. Lý do là vì fetch_array xuất dữ liệu của bạn bằng chỉ mục kết hợp và được đánh số. Có nghĩa là JSON sau đó sẽ giữ cả hai thứ này khi được chuyển đổi. Đây là ví dụ, với dòng json_encode là quan trọng nhất –

SELECT CONCAT[firstName, lastName]
FROM students
WHERE studentId = 2
5

Cái nào xuất ra JSON sau đây -

SELECT CONCAT[firstName, lastName]
FROM students
WHERE studentId = 2
6

Một lần nữa, hãy nhanh chóng thả cái này vào công cụ JSONLint để đảm bảo rằng chúng ta có JSON hợp lệ

Đầu ra, như đã giải thích trước đây, có hai loại khóa truy cập, một số nguyên và một chuỗi. Nếu không cần cả hai, bạn có thể sử dụng một tham số trong hàm fetch_array để lọc ra một trong hai. Xem bài viết chuyên sâu của tôi về các chức năng MySQLi tại đây

Bản tóm tắt

MySQL To JSON thực sự đơn giản, với việc sử dụng hàm json_encode tuyệt vời, chúng ta có thể phân tích kết quả MySQL cực kỳ nhanh chóng và dễ dàng. Hàm này cũng có thể được sử dụng với nhiều định dạng dữ liệu khác, nó không nhất thiết phải là kết quả từ MySQL, chẳng hạn, nó có thể là một mảng được tạo thủ công

Kiểm tra chức năng json_encode trên tài liệu PHP để đọc thêm. Vui lòng sử dụng bất kỳ mã nào trong bài đăng này trong các dự án của riêng bạn. Nếu bạn có bất kỳ câu hỏi nào, hãy để lại trong phần bình luận và tôi sẽ liên hệ lại với bạn ngay khi có thể

Cuối cùng, tôi đã đề cập đến công cụ web JSONLint và thực sự khuyên bạn nên kiểm tra nó. Đó là một công cụ miễn phí, vô giá giúp ích khi làm việc với JSON bất kể bạn đang cố gắng đạt được điều gì

MySQL có trả về JSON không?

MySQL hỗ trợ loại dữ liệu JSON gốc được xác định bởi RFC 7159, cho phép truy cập hiệu quả vào dữ liệu trong tài liệu JSON [Ký hiệu đối tượng JavaScript]. Kiểu dữ liệu JSON cung cấp những lợi thế này so với việc lưu trữ các chuỗi định dạng JSON trong một cột chuỗi. Tự động xác thực các tài liệu JSON được lưu trữ trong các cột JSON.

Bạn có thể chuyển đổi SQL sang JSON không?

Có hai cách để chuyển đổi các kết quả quan hệ thành JSON, đó là các tùy chọn AUTO và PATH . Đây là cách đơn giản nhất để chuyển đổi dữ liệu quan hệ thành định dạng JSON vì tất cả những gì bạn phải làm là thêm mệnh đề FOR ​​JSON AUTO vào cuối câu lệnh SELECT của mình.

Hàm JSON extract[] trong MySQL là gì?

Chúng ta có thể sử dụng hàm JSON_EXTRACT để trích xuất dữ liệu từ trường JSON . Cú pháp cơ bản là. JSON_EXTRACT[json_doc, đường dẫn] Đối với một mảng JSON, đường dẫn được chỉ định bằng $[index] , trong đó chỉ mục bắt đầu từ 0. mysql> CHỌN JSON_EXTRACT['[10, 20, 30, 40]', '$[0]'];

MySQL có Jsonb không?

JSON đã được hỗ trợ bởi MySQL kể từ phiên bản 5. 7. số 8. MySQL lưu trữ JSON ở dạng nhị phân, giống như định dạng JSONB của PostgreSQL . Điều này có nghĩa là JSON luôn được xác thực vì nó luôn được phân tích cú pháp và nó được truy cập hiệu quả vì nó được tối ưu hóa thành các khóa có giá trị và mảng.

Chủ Đề