Tach!
Es bleibt sich also gleich, ob man die notwendigen Backslash- und Quote-Zeichen mit mysqli_real_escape_string(), mit addslashes() oder einer beliebigen anderen Funktion maskieren lässt.
Bis in einer zukünftigen MySQL-Version weitere Zeichen dazukommen, die von addSlashes nicht erfaßt werden.
Das halte ich für äußerst unwahrscheinlich, dass ein weiteres Zeichen zum Quotieren von Strings hinzukommen wird, welches man dann maskieren müsste. Zudem ändern weitere Zeichen am grundsätzlichen Problem nichts.
Verwendet man gleich die dafür vorgesehene Funktion mysqli_real_esacpe_string statt einer, die derzeit zufällig fast das gleiche macht, ist man auf der sicheren Seite.
Nein, nicht die Funktion ist entscheidend, sondern ihre korrekte Anwendung. Das sollte man nun langsam erkannt haben. addslashes() behandelt alle für das Quotieren notwendigen Zeichen. Wenn sie falsch angewendet wurde - was hier der Fall zu sein scheint - nützt es nichts, sie gegen eine anderen Funktion auszutauschen, die auf gleiche Weise falsch angewendet wird.
Es wäre nun schön, wenn wir nicht nur Indizien sehen (fertiges Statement mit SQL-Injection plus Fehlermeldung, bei der ein in der Injection steckendes GROUP BY ein Problem verursacht), sondern auch den Code, der das Statement zusammenbaut.
dedlfix.