$stmt->bind_param() überprüft die angegebenen Variablen nicht auf einen bestimmten Typ, sondern konvertiert sie nur in den angegebenen Typ. Und Ihr String 'aaaaaaa' wird in einen int-Wert umgewandelt:0. So macht es PHP.
Die Datenbank-Einfügeanweisung ist der falsche Ort, um zu überprüfen, ob Ihre Variablen nützliche/korrekte Werte enthalten. Mach das vorher und versuche sie nur einzufügen, wenn deine Validierungen funktionieren.
Um die Validierung für ein int durchzuführen, könnten Sie die php-Funktion is_numeric() oder is_int() verwenden.