E' difficile darti una risposta.

il comando e' INSERT e non INSERTO
crei un nuovo record con solo un campo (ultimo_login) valorizzato e gli altri?
cerchi un record con username e password che non hai valrizzato (nella insert di prima)
in $data hai un array che poi usi come fosse una variabile nell'UPDATE.

Morale della favola lascia la data nel suo formato nativo e convertila solo quando la estrai per utilizzarla. datetime lo devi aggiornare tu, timestamp puo' aggiornarsi da solo ma sempre e solo nel formato nativo.