Không có lý do gì để sử dụng num_rows , điều này không chỉ gây nhầm lẫn, dễ sử dụng mà còn có thể gây ra các vấn đề về hiệu suất nếu sử dụng sai.
Chỉ cần tìm nạp COUNT(1) và sau đó tìm nạp một cột từ hàng đầu tiên trong kết quả SQL của bạn.
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$conn = new mysqli($host, $username, $password, $database);
$conn->set_charset('utf8mb4');
$stmt = $conn->prepare("SELECT COUNT(1) FROM users WHERE username = ?");
$stmt->bind_param("s", $_POST['username']);
$stmt->execute();
$exists = $stmt->get_result()->fetch_row()[0];
if($exists) {
echo "valid";
} else {
echo "invalid";
}
Nếu bạn muốn vì một lý do kỳ lạ nào đó gắn bó với num_rows bạn sẽ phải gọi store_result() trên câu lệnh và sau đó lấy num_rows từ câu lệnh hoặc gọi get_result() và đọc giá trị của num_rows trên tập kết quả trả về.