Tach!
Aus dem PHP manual: „Die Funktion addslashes() wird manchmal fälschlicherweise verwendet, um zu versuchen[,] SQL Injection zu verhinden.“ (Hervorhebung von mir)
Ja, man sollte schon die datenbankspezifischen Funktionen verwenden. Allerdings kann addslashes() bereits ausreiched sein. Die wesentlichen Zeichen für SQL-Statements im MySQL-Dialekt sind von addslashes() abgedeckt. Die Zeichen, die außer diesen von mysqli_real_escape_string() behandelt werden, sind nicht für die sichere Übertragung von Daten via SQL-Statement-String in die Datenhaltung notwendig. Sie sind für Spezialfälle gedacht. Beispielsweise dient das Maskieren der Zeilenendezeichen dafür, dass in Logfiles keine Zeilenschaltung erfolgt. Ein SQL-String auf dem Weg in die Datenbank kann diese aber problemlos als unmaskierte Zeichen enthalten.
Trotzdem nochmal die Empfehlung, die vorgesehene Funktioen zu verwenden, dann muss man sich keine Gedanken machen, ob die Spezialfälle zutreffen oder nicht.
dedlfix.