You called mysql_query twice. I would expect something like this:
if (isset($_POST['create'], $_POST['username'], $_POST['character'],
$_POST['password'], $_POST['level'], $_POST['guardian']))
{
$sql = sprintf("INSERT INTO accounts
(username, password, character, level, guardian)
VALUES ('%s', '%s', '%s', %d, '%s')",
mysql_real_escape_string($_POST['username'], $con),
mysql_real_escape_string($_POST['password'], $con),
mysql_real_escape_string($_POST['character'], $con),
$_POST['level'],
mysql_real_escape_string($_POST['guardian'], $con));
mysql_query($mysql, $con)
or die('Error: ' . mysql_error($con) . '; ' . htmlspecialchars($sql));
}