Что с ним не так?
Все, к сожалению. В частности, он открыт для атак с использованием SQL-инъекций.
Если это дословно вырезать и вставить, то причина, по которой он на самом деле не работает, это заключительная закрывающая скобка. Предположительно, вы не проверяете ошибки, когда вызываете это?
При использовании базового API MySQL должно быть:
$sth = $db->prepare("SELECT COUNT(*) FROM users WHERE username = ? AND password = ?");
$sth->execute($username, $password);
list($count) = $sth->fetchrow();
$authorized = ($count > 0);
или аналогичный (код не проверен, E & OE и т. Д.)