Wieso nutzt du htmlspecialchars() im SQL-Query? Beim SQL-Query solltest du die Escape-Funktion deines DB-Treibers nutzen (mysqli_real_escape_string) oder besser gleich Prepared Statements.
Ich möchte dir nicht die Motivation nehmen, aber ich bezweifle, dass du auch weißt, wie man richtiges Design der Klassenarchitektur durchführt. Kennst du SOLID, Liskov substitution principle, Dependency Injection, ...?ich staune sowieso, das ich mir binnen fast 2 wochen, das objektorientierte programmieren aneignen konnte