Io intanto non farei cosi'.

io farei :
1- Imposta la tabella utenti con login(univoco) e pwd.
2- A tempo di login query sul campo login
3- Se la query mi risponde il risultato deve essere 1 tupla altrimenti errore
4- passo a md4 la pwd inserita dall'utente
5- controllo la pwd del db con quella passata ad md5 al punto 4
6- se coincidono accedi altrimenti esci.



Si fa cosi' perche mdh soffre di collisioni e 2 pwd diverse hanno una probabilita, molto bassa ma c'e', di risultate uguali.
Poi la query viene eseguita sul nome utente che e' unico e se non trovo solo 1 riga gia' trovo il primo errore.
Poi le pwd le controllo da codice evitando injections e altro.

Ovviamente il nome utente deve essere opportunamento controllato prima di essere concatenato con la query.