also ich konnte den code noch lesen

daher sag ich dir folgendes:

1. allgemeines: wieso hängt ihr immer eine while schleife um ein fetch array, wenns eh nur ein datensatz ist?

2. mach den werberbonus in den if block vom user eintragen, also nach if (!$error) {
....
}

sonst kann er halt tausend mal falsche angaben eingeben und landet immer wieder auf deine anmeldeseite und bekommt halt jedes mal den bonus !