$stmt->bind_param() kontrollerar inte de givna variablerna för en viss typ, den konverterar dem bara till den angivna typen. Och din sträng 'aaaaaaa' omvandlas till ett int-värde:0. Det är så php gör det.
Databasinsertsatsen är fel plats att kontrollera om dina variabler innehåller användbara/korrekta värden. Gör det innan och försök bara att infoga dem om dina valideringar fungerar.
För att göra valideringen för en int kan du använda php-funktionen is_numeric() eller is_int().