si para mysql los caracteres "%" o "#" no son especiales o importantes no deberías tener problemas, si no prueba tu mismo inyectando dichos caracteres y compruébalo

.
solo deberías escapar lo que proviene del ingreso del usuario, es decir,
lo que no puedes controlar, en cambio $listado lo construyes tú,
así que tu puedes garantizar que no tenga caracteres especiales, no puedes escapar $listado porque incluso puedes perder la sintaxis de SQL que necesitas para que funcione, así como lo haces está bien