Trong hướng dẫn này, chúng ta sẽ xem xét cách chúng ta có thể trả về nhiều giá trị từ thủ tục được lưu trữ. Sau một ví dụ thực tế, chúng ta sẽ xem làm thế nào chúng ta có thể triển khai ví dụ tương tự trong PHP. Hãy đi sâu vào nó
Cũng đọc. Tạo thủ tục lưu trữ MySQL [Có ví dụ]
Trước khi chúng ta bắt đầu
Hàm được lưu trữ trong MySQL chỉ có thể trả về một giá trị. Vì vậy, khi bạn muốn chương trình của mình trả về nhiều giá trị, thủ tục được lưu sẵn sẽ hoạt động
Thủ tục lưu trữ hỗ trợ ba loại tham số, IN, OUT và INOUT trong đó OUT và INOUT được sử dụng để trả về các giá trị từ thủ tục lưu sẵn cho chương trình gọi
Nếu bạn không quen thuộc với các loại tham số khác nhau trong thủ tục lưu trữ, chúng tôi khuyên bạn nên đọc hướng dẫn chi tiết của chúng tôi về tham số thủ tục lưu trữ MySQL (liên kết đến bài viết trước)
Ví dụ để trả về nhiều giá trị từ thủ tục được lưu trữ
Để chứng minh các ví dụ, chúng tôi sẽ sử dụng bảng mô tả và dữ liệu sau
Bây giờ, chúng ta sẽ tạo thủ tục lưu trữ trả về tổng số đơn đặt hàng đã được vận chuyển, đã giao và đã hủy
DELIMITER // CREATE PROCEDURE orders_summary(OUT shipped INT,OUT delivered INT, OUT canceled INT) BEGIN SELECT COUNT(*) INTO shipped FROM orders WHERE status="shipped"; SELECT COUNT(*) INTO delivered FROM orders WHERE status="delivered"; SELECT COUNT(*) INTO canceled FROM orders WHERE status="canceled"; END // DELIMITER ;
Code language: SQL (Structured Query Language) (sql)Trong ví dụ trên, chúng tôi đã khai báo ba tham số OUT để giữ các giá trị của các đơn hàng đã vận chuyển, đã giao và đã hủy
Trong phần thân thủ tục, chúng ta đã viết ba câu lệnh SELECT với hàm COUNT để đếm số lượng đơn đặt hàng với điều kiện trạng thái của chúng bằng cách sử dụng mệnh đề WHERE
Vì vậy, chúng tôi đang trả về nhiều giá trị từ một thủ tục được lưu trữ. Hãy kiểm tra nó ngay bây giờ
CALL orders_summary(@shipped, @delivered, @canceled); SELECT @shipped, @delivered, @canceled;
Code language: SQL (Structured Query Language) (sql)Nếu bạn kiểm tra dữ liệu bảng, có hai đơn hàng đã giao, hai đơn hàng đã hủy và một đơn hàng đã được giao. Chúng ta sẽ nhận được kết quả theo cách này
Như bạn có thể thấy, chúng tôi đã nhận được kết quả như mong đợi, điều đó có nghĩa là quy trình trả về nhiều giá trị của chúng tôi hoạt động hoàn hảo
Trả về nhiều giá trị từ thủ tục được lưu trữ trong PHP
Ví dụ trên đã được chứng minh bằng MySQL CLI. Bây giờ chúng ta sẽ thực hiện ví dụ tương tự trong PHP
Chúng tôi đã tạo thủ tục được lưu trữ ở trên. Chúng tôi sẽ sử dụng quy trình tương tự trong ví dụ bên dưới bên trong PHP
Trong ví dụ dưới đây, chúng tôi đã sử dụng báo cáo chuẩn bị. MySQLi không cung cấp bất kỳ hỗ trợ gốc nào cho các tham số đầu ra, do đó bạn phải xuất các giá trị được trả về của thủ tục được lưu trữ thành các biến người dùng và sau đó tìm nạp các giá trị bằng cách sử dụng câu lệnh SELECT
<?php $conn = mysqli_connect("localhost", "root", "", "journaldev"); $call = mysqli_prepare($conn, 'CALL orders_summary(@shipped, @delivered, @canceled)'); mysqli_stmt_execute($call); $select = mysqli_query($conn, 'SELECT @shipped, @delivered, @canceled'); $result = mysqli_fetch_assoc($select); echo "Total shipped orders are = ".$result['@shipped'] . '<br>'; echo "Total delivered orders are = ".$result['@delivered'] . '<br>'; echo "Total canceled orders are = ".$result['@canceled'] . '<br>'; ?>
Code language: PHP (php)Ở đây, chúng tôi đã sử dụng thông tin đăng nhập cơ sở dữ liệu để kết nối với cơ sở dữ liệu. Sau đó, chúng tôi sử dụng câu lệnh đã chuẩn bị để gọi thủ tục được lưu trữ. Sau đó, chúng tôi đã sử dụng câu lệnh SELECT để tìm nạp các giá trị từ các biến người dùng
Hãy lưu mã trong “ret_multiple. php” và chạy nó trong trình duyệt
Chúng tôi nhận được đầu ra sau trong trình duyệt
Như bạn có thể thấy, chúng tôi đã nhận được đầu ra mong đợi
Phần kết luận
Trong hướng dẫn này, Chúng tôi đã học cách trả về nhiều giá trị từ một thủ tục được lưu trữ. Cùng với nó, chúng ta đã thấy một ví dụ trong đó chúng ta gọi là thủ tục được lưu trữ, thủ tục này trả về nhiều giá trị trong PHP và được hiển thị trong trình duyệt. Tôi hy vọng hướng dẫn này hữu ích cho bạn. Hẹn gặp lại bạn trong bài hướng dẫn tiếp theo