mysqli_real_escape_string()
VYŽADUJE musíte mít aktivní/navázané připojení k DB. Protože děláte m_r_e_s()
zavolejte PŘEDTÍM, než se připojíte, jednoduše dostanete zpět booleovskou hodnotu FALSE, což znamená selhání. Takže zahazujete své „uvozované“ hodnoty.
Booleovské falešné hodnoty vložené do řetězce se prostě převedou na prázdné řetězce, takže vaše dotazy začnou vypadat takto
SELECT ... WHERE username=''
^---see the boolean false in there?
Vaše sekvence kódu by měla být:
session_start();
connect_to_db();
prepare_variables();
do_query();
A protože používáte mysqli, proč stejně ručně escapujete proměnné? Můžete použít připravený příkaz + zástupné symboly a problém úplně obejít.