Khi bạn thực thi một câu lệnh thông qua mysqli, các kết quả thực sự không có trong PHP cho đến khi bạn tìm nạp chúng - kết quả do công cụ DB nắm giữ. Vì vậy, mysqli_stmt
đối tượng không có cách nào để biết có bao nhiêu kết quả ngay sau khi thực hiện.
Sửa đổi mã của bạn như sau:
$stmt->execute();
$stmt->store_result(); // pull results into PHP memory
// now you can check $stmt->num_rows;
Điều này không áp dụng cho ví dụ cụ thể của bạn, nhưng nếu tập kết quả của bạn lớn, $stmt->store_result()
sẽ tiêu tốn rất nhiều bộ nhớ. Trong trường hợp này, nếu tất cả những gì bạn quan tâm là tìm xem có ít nhất một kết quả được trả về hay không, đừng lưu trữ kết quả; thay vào đó, chỉ cần kiểm tra xem siêu dữ liệu kết quả có phải không:
$stmt->execute();
$hasResult = $stmt->result_metadata ? true : false;