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ề.