Creo que el tema está por este lado:
Llamadas de retorno.
En definitiva, hay un conflicto de entorno. Mientras array_map() es una función global (o creo que de clase), en el caso específico, real_escape_string es un
método de instancia. Para poder usarlo se debe proceder de otro modo.
Por allí, iterar sería mas simple que hacer algo interesante, pero algo rebuscado.