$stmt->bind_param() non controlla le variabili fornite per un certo tipo, le converte solo nel tipo specificato. E la tua stringa 'aaaaaaa' viene convertita in un valore int:0. È così che lo fa php.
L'istruzione di inserimento del database è il posto sbagliato da controllare, se le tue variabili contengono valori utili/corretti. Fallo prima e prova a inserirli solo se le tue convalide funzionano.
Per eseguire la convalida per un int, puoi usare la funzione php is_numeric() o is_int().