mysqli_num_rows () espera que el parámetro 1 sea mysqli_result, nulo dado [duplicado]

Esta pregunta ya tiene una respuesta aquí:

mysql_fetch_array () / mysql_fetch_assoc () / mysql_fetch_row () / mysql_num_rows, etc.… espera que el parámetro 1 sea recurso o resultado 31 respuestas

Soy nuevo en PHP y tengo una nueva pregunta. Estoy comenzando de nuevo con mysqli.

Trabajo en un pequeño registro. Si quiero el valor, nombre de usuario compruebe si ya está asignado, con mysqli_num_rows me sale el siguiente error: Advertencia: mysqli_num_rows () espera que el parámetro 1 sea mysqli_result, nulo dado en C: \ xampp \ htdocs \ index.php en línea 21

¿Puede alguien ayudarme allí? 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);
        } 
    }

?>

Respuestas a la pregunta(1)

Su respuesta a la pregunta