$stmt->bind_param() nie sprawdza podanych zmiennych pod kątem określonego typu, a jedynie konwertuje je na określony typ. A twój ciąg 'aaaaaaa' jest konwertowany na wartość typu int:0. W ten sposób robi to php.
Instrukcja wstawiania bazy danych jest niewłaściwym miejscem do sprawdzania, czy zmienne zawierają przydatne/poprawne wartości. Zrób to wcześniej i spróbuj je wstawić tylko wtedy, gdy Twoje walidacje działają.
Aby przeprowadzić walidację int, możesz użyć funkcji php is_numeric() lub is_int().