mysqli_real_escape_string()
REQUIERE que tenga una conexión activa/establecida a la base de datos. Ya que estás haciendo el m_r_e_s()
llame ANTES de conectarse, simplemente obtendrá FALSO booleano para indicar una falla. Así que estás tirando a la basura tus valores "cotizados".
Los valores falsos booleanos insertados en una cadena simplemente se convierten en cadenas vacías, por lo que sus consultas comienzan a verse como
SELECT ... WHERE username=''
^---see the boolean false in there?
Su secuencia de código debe ser:
session_start();
connect_to_db();
prepare_variables();
do_query();
Y dado que está usando mysqli, ¿por qué está escapando manualmente las variables de todos modos? Simplemente podría usar una declaración preparada + marcadores de posición y omitir el problema por completo.