$stmt->bind_param() controleert de gegeven variabelen niet voor een bepaald type, het converteert ze alleen naar het gespecificeerde type. En je string 'aaaaaaa' wordt omgezet in een int-waarde:0. Zo doet php het.
De database insert-instructie is de verkeerde plaats om te controleren of uw variabelen bruikbare/juiste waarden bevatten. Doe dat eerder en probeer ze alleen in te voegen als uw validaties werken.
Om de validatie voor een int uit te voeren, zou je de php-functie is_numeric() of is_int() kunnen gebruiken.