Проверяя ваш код, я удивляюсь, что он работает вообще, когда вы не заключаете в кавычки вставляемые вами литералы - вы будете генерировать такой код:
INSERT INTO user (password, username) VALUES (abc1234fg00000, admin);
Так что каждый раз будет выдавать ошибку. Предполагая, что это просто опечатка ....
Расширение mysql ограничивает вашу способность выполнять инъекционные атаки, разрешая только один запрос на вызов. Кроме того, существует ограниченная область для инъекционной атаки на оператор INSERT. Добавьте к этому тот факт, что вы изменяете представление на нейтральный формат, прежде чем встраивать его в оператор вставки, означает, что это не потенциальный путь для такой атаки. Тем не менее, ваш код должен упасть, если кто-то отправит POST-имя пользователя, содержащее одиночную кавычку (если этого не произойдет, то у вас включена функция magic_quotes, которая не рекомендуется).
OTOH, если вы применяете тот же метод для проверки учетной записи, тогда вы широко открыты для инъекционных атак - рассмотрите
"SELECT 1
FROM users
WHERE username='" . $_POST['username'] . "'
AND password='" . sha1($_POST['username'] . "';";
Если $ _POST ['username'] содержит "admin 'OR 1", то ваша система взломана.
Вы должны всегда использовать mysql_real_escape_string (), если только вы не сделали данные безопасными, используя другую функцию (например, sha1, bas64_encode .... но НЕ добавляет косые черты)
С