Tôi có một thủ tục lưu sẵn có nhiều tập kết quả. Làm cách nào để chuyển sang tập kết quả thứ 2 trong mysqli để nhận các kết quả đó?Lấy ra nhiều tập kết quả với thủ tục lưu sẵn trong php/mysqli
Hãy nói rằng nó là một proc được lưu trữ như:
create procedure multiples(param1 INT, param2 INT)
BEGIN
SELECT * FROM table1 WHERE id = param1;
SELECT * FROM table2 WHERE id = param2;
END $$
Các PHP là một cái gì đó như thế này:
$stmt = mysqli_prepare($db, 'CALL multiples(?, ?)');
mysqli_stmt_bind_param($stmt, 'ii', $param1, $param2);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id);
Sau đó, đây là một phần tôi không thể có được để làm việc. Tôi đã thử sử dụng mysqli_next_result để chuyển sang tập kết quả tiếp theo, nhưng không thể làm cho nó hoạt động. Chúng tôi đã làm cho nó hoạt động với mysqli_store_result và mysqli_fetch_assoc/array/row, nhưng vì một lý do nào đó tất cả các int được trả về dưới dạng các chuỗi trống.
Bất kỳ ai khác gặp phải điều này và có giải pháp?
Thủ tục gọi trả lại đúng bằng cách sử dụng mysqli_multi_query() thay vì câu lệnh đã chuẩn bị chưa? – gapple
Ồ, xin lỗi. Phản ứng đầu tiên của tôi không đọc chính xác bình luận của bạn. Chúng ta cần sử dụng các câu lệnh đã được chuẩn bị, nhưng truy vấn là đúng và làm việc cho tập kết quả đầu tiên. Tôi chỉ không thể tìm ra cách để chuyển nó đến tập kết quả thứ 2. – MacAnthony