Der er ingen grund til at bruge num_rows
, som ikke kun er forvirrende, let at misbruge, men også kan forårsage ydeevneproblemer, hvis det misbruges.
Hent bare COUNT(1)
og hent derefter en enkelt kolonne fra den første række i dit SQL-resultat.
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";
}
Hvis du af en eller anden mærkelig grund ville holde dig til num_rows
du skal enten kalde store_result()
på sætningen og få derefter num_rows
fra sætningen eller kald get_result()
og læs værdien af num_rows
på det returnerede resultatsæt.