¿ Por curiosidad, por qué no lo guardas en la base de datos en el formato XML original ?
La función que has puesto para codificar de nuevo está bien pero no cubre todos los casos. Hay muchas más entities aparte de las que estás tratando. Por ejemplo: aacute, copy, cent, pound, ...
Puedes ver una lista aquí:
http://www.w3.org/TR/REC-html40/sgml/entities.html