Não há razão para usar
num_rows
, que não só é confuso, fácil de usar indevidamente, mas também pode causar problemas de desempenho se for mal utilizado. Basta buscar
COUNT(1)
e, em seguida, busque uma única coluna da primeira linha em seu resultado SQL. 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";
}
Se você quisesse, por algum motivo estranho, ficar com
num_rows
você teria que chamar store_result()
na instrução e, em seguida, obtenha o num_rows
da instrução ou chame get_result()
e leia o valor de num_rows
no conjunto de resultados retornado.