Tach!
wenn Du einen Wert, den Dir der Browser übergibt (sei es $_GET, $_POST, $_REQUEST oder $_COOKIE), in einen SQL String einsetzt, dann ist mysqli_real_escape_string Schritt 1 auf einem von drei Wegen.
Der Teilsatz "den Dir der Browser übergibt ..." muss gestrichen werden. Die Herkunft von Daten ist für das Übergeben in einen anderen Kontext irrelevant. Wichtig ist nur, dass ein gültiges und erwünschtes Ergebnis entsteht, also dass dem Kontext entsprechend vorgegangen wird.
Falls die Daten vom vorherigen Kontext nicht in Rohform ankommen (zum Beispiel mit Escape-Zeichen gespickt sind), dann sollten sie in ihre Rohform konvertiert werden. Das ist aber ein Schritt, der vom Zielkontext unabhängig ist. Die meisten Verarbeitungsschritte liefern nur dann richtige Ergebnisse, wenn sie nicht mit für den Transport benötigten zusätzlichen Zeichen angereichert sind (beispielsweise Ermittlung der String-Länge). Deshalb sollte eine solche Bereinigung gleich beim Entgegennehmen der Daten geschehen.
Das Thema Zeichenkodierung ist nochmal eine andere nicht zu vernachlässigende Baustelle.
dedlfix.