¿Y dices que eso no hace el INSERT?
Es completamente ilógico lo que argumentas, quien lo lea dirá que si es 100% posible de que funciona.
¿Por qué?
Pues porque así es correcto el uso de la función de escape.
Ahora, ¿como estás comprobando que efectivamente se guarda o no en la BD?
¿Estás depurando la consulta? ¿Le imprimes antes de ejecutarla? ¿Te arroja algún error que no conoces?
Intenta eso y nos dices:
Código PHP:
$ready = mysql_query("INSERT INTO ba_publicaciones (mensaje) VALUES ('$mensaje')");
if ( ! $ready) die('ERROR: ' . mysql_error());