Ganz einach, du lässt alle User ausgeben die in der Tabelle enthalten sind, durchsucht dann deine Query in einer Schleife und jedes mal wenn die Usernamen übereinstimmen wird dein Code durchgeführt.
Ich hingehen lass mir von Anfang an nur die User ausgeben, bei denen die Usernamen übereinstimmen, danach überprüfe ich wieviele User mir von der Datenbank zurückgegeben werden, und nur wenn ein User zurückgegeben wird wird der Code durchgeführt.
Vorteil davon ist zum einen, weniger Datenlast zwischen den Servern.
Zum anderen, angenommen der gesuchte User steht ganz am Ende der Tabelle. Dann muss dein Script n mal durchlaufen werden wobei n die Anzahl der User darstellt.
Nun stell dir mal vor dein Script hat 1000 User in der Datenbank, dann hast du 999 unnötige Schleifendurchgänge, das ist ne Menge Performance verlust. Zudem läufst du gefahr 999 mal User informationen rauszugeben, da du alle Felder aus der Tabelle ausliest.
Und nun zum Code:
$abfrage = "SELECT * FROM user"; // diese Zeile ist unwichtig, zum anderen die
// . die ich in der Verzweigung hatte, da war ich bloß zu faul deinen ganzen Code zu kopieren dh. dir fehlt deine Programmlogikdie solltest du noch einfügen, ansonsten stimmts