$stmt->bind_param() tjekker ikke de givne variabler for en bestemt type, den konverterer dem kun til den angivne type. Og din streng 'aaaaaaa' konverteres til en int-værdi:0. Det er den måde, php gør det på.
Databaseindsæt-sætningen er det forkerte sted at kontrollere, om dine variabler indeholder nyttige/korrekte værdier. Gør det før, og prøv kun at indsætte dem, hvis dine valideringer virker.
For at udføre valideringen for en int, kan du bruge php-funktionen is_numeric() eller is_int().