und der Username entweder escaped oder, so wie bei Dir, als Argument an ein prepared statement gehängt.
Mehr nicht.
Dagegen spricht, dass es verbreitete Regeln für Benutzernamen gibt (kleine lateinische Buchstaben, Minus-Symbol und Ziffern, beginnt mit Buchstabe). Spätestens bei einer (womöglich später genutzten) Fremdauthentifizierung (also nicht durch die eigenen Skripte) können beliebige Benutzernamen (Genauer: Login-Namen) also patzen. Man müsste dann „mappen“. Das bedeutet: Aufwand, Fehlerquelle, …
Nach einer Eingabe zwecks Login sollte man ihn also nur trimmen (wg. Copy & Paste - Fehlern), aber beim Anlegen strikter vorgehen: Aber nicht „sanieren“ sondern prüfen und ablehnen und die Eingabe ins HTML-Formular nicht zulassen.