mysqli_num_rows () espera que o parâmetro 1 seja mysqli_result, null dado [duplicate]

Esta pergunta já tem uma resposta aqui:

mysql_fetch_array () / mysql_fetch_assoc () / mysql_fetch_row () / mysql_num_rows etc… espera que o parâmetro 1 seja recurso ou resultado 31 respostas

Sou novo em PHP e tenho uma nova pergunta. Estou começando do zero com o mysql

Eu trabalho em um pequeno registro. Se eu quiser o valor, nome de usuário verifique se ele já está atribuído, com mysqli_num_rows me o seguinte erro é gerado: Aviso: mysqli_num_rows () espera que o parâmetro 1 seja mysqli_result, nulo fornecido em C: \ xampp \ htdocs \ index.php on-line 21

Pode alguém me ajudar lá? Código

<?php

$db = mysqli_connect(
    'localhost',
    'root',
    '',
    'holycms');

if(!db) {
    exit("Verbindungfehler:" . mysqli_connect_error());
}

$username = $_POST["username"];
$password = $_POST["password"];

    if(isset($_POST["username"]) OR isset($_POST["password"])) {
        if(empty($_POST["username"]) OR empty($_POST["password"])) {
            echo "Bitte fuelle alle Felder aus!"; } else {
            $username = mysqli_real_escape_string($_POST['username']); 
            $rows = mysqli_query("SELECT FROM users WHERE username = ".'$username'."") or die(mysqli_error); }
            if(mysqli_num_rows($rows) > 1) {
                echo "Username bereits besetzt";
            } elseif(!ctype_alnum($_POST['username'])) {
                "Dein Benutzername darf keine Sonderzeichen besitzen";
            } elseif(strlen($_POST["username"])) {
                echo "Dein Username ist zu lang!"; 
            } else {
            $password = sha1($_POST["password"]);
            $db = mysqli_query("INSERT INTO users (username, password) VALUES ('$username', '$password'") or die(mysqli_error);
        } 
    }

?>

questionAnswers(1)

yourAnswerToTheQuestion