警告:mysqli_stmt :: bind_param():变量数与数字不匹配

I am receiving this error and am unable to figure out why.

Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement in C:\xampp\htdocs\insert.php on line 32

    $SELECT = "SELECT id FROM heroes WHERE name = ? LIMIT 1";
    $INSERT = "INSERT INTO heroes (id, name, title, bp, ticket, diamond) VALUES ('NULL', '$name', '$title', '$bp', '$ticket', '$diamond')";

    //Prepare statement
    $stmt = $connection->prepare($SELECT);
    $stmt->bind_param("s", $name);
    $stmt->execute();
    $stmt->bind_result($name);
    $stmt->store_result();
    $rnum = $stmt->num_rows;

    if ($rnum==0){
        $stmt->close();
        $stmt = $connection->prepare($INSERT);
        $stmt->bind_param("sssss", $name, $title, $bp, $ticket, $diamond);
        $stmt->execute();
        echo "New hero inserted successfully, sir!";
    } else { 
        echo "There is already a hero with this name, sir!";
    }
    $stmt->close();
    $connection->close();

You don't actually have any params to bind in your insert:

$INSERT = "INSERT INTO heroes (id, name, title, bp, ticket, diamond) VALUES ('NULL', '$name', '$title', '$bp', '$ticket', '$diamond')";

Do this:

$INSERT = "INSERT INTO heroes (name, title, bp, ticket, diamond) VALUES (?, ?, ?, ?, ?)";

Then the values you bind replace the question marks.

Also note there is a very significant difference between NULL and 'NULL' -- the latter is a string. If you have an auto-incrementing ID field, just leave it out of the insert and the database will fill it in for you.