É de salientar que verificar o número de linhas de resposta não resulta.
Pegando no query do MPalhas, uma verificação posterior do tipo
PHP:
if(mysql_num_rows() != 1) die("SQL Injection?");
é possível dar-lhe a volta com a injection string
Código:
nao_interessa' OR 1=1 [COLOR=red]LIMIT 1 [/COLOR]#
E assim o número de rows retornadas é sempre 1.
Geralmente, essa é a conta de admin, em grande parte dos sistemas.
O ideal é verificar a string por caracteres "estranhos". Isto é, se um username só pode ter letras e números, uma regular expression pode fazer essa verificação imediatamente.
Por outro lado, caso o texto introduzido possa ter aspas (como este mesmo post, que vai para a base de dados do fórum), é preciso saber fazer escape com o mysql_real_escape_string, mas o ideal é conhecer todos os vectores de injecção possíveis (e não são poucos) e saber como os contornar.
Procura no Google por SQL Injection que deves encontrar boas respostas