mysqli_real_escape_string()
KRÄVER du ska ha en aktiv/etablerad anslutning till DB. Eftersom du gör m_r_e_s()
ring INNAN du ansluter får du helt enkelt tillbaka boolesk FALSE för att betyda misslyckande. Så du slänger dina "citerade" värden.
Booleska falska värden som infogas i en sträng konverteras bara till tomma strängar, så dina frågor börjar se ut som
SELECT ... WHERE username=''
^---see the boolean false in there?
Din kodsekvens ska vara:
session_start();
connect_to_db();
prepare_variables();
do_query();
Och eftersom du använder mysqli, varför undslipper du variabler manuellt? Du kan bara använda ett förberett uttalande + platshållare och förbigå problemet helt.