Porque STR_TO_DATE() transforma una fecha en una cadena, en base a un formato determinado.
Lo que te conviene usar es simplemente YEAR() y MONTH sobre la columna de la tabla y compararlos con los valores ingresados, pero procura hacerlo de modo que los valores queden com onúmeros uy no como cadenas (todos los lenguajes tienen funciones para parseralos como tales).
O sea, algo así:
La idea de que no uses comparaciones de cadena es para no obligar a MySQL a realizar conversiones implícitas de tipo de dato.