Để 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 = 23
Đ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 = 24
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 = 25
Cái nào xuất ra JSON sau đây -
SELECT CONCAT[firstName, lastName] FROM students WHERE studentId = 26
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ì