Hola. ¿Por qué ponés AND? Probá así:
Cita: mysql_query("update usuarios set msjpersonal='$msjpersonal', sexo='$sexo', dia='$dia', mes='$mes', ano='$ano' where nick='$sesion'",$conectar)or die(mysql_error());
¿Te pone un 0 en msjpersonal? Fijate imprimiendo los valores en pantalla (Antes de cargarlos a la BD) a ver si aparecen bien, probablemente sea un problema de la función depurar.
Si te aparecen bien los valores pero te sigue apareciendo un 0 en la BD fijate que el campo no sea numérico (Si estás insertándole un texto).
Saludos.