As far as I see you're missing pretty important parts. Also, "Create" should be in an if statement just in case something goes wrong and it doesn't create, which will cause a crash.
I extracted the code and updated it from how I see fit. Not sure if there's errors or not.
float x, y, z, o;
Map* map = player->GetMap();
uint32 db_guid = sObjectMgr->GenerateLowGuid(HIGHGUID_UNIT);
player->GetPosition(x, y, z, o);
Creature* creature = new Creature();
if (!creature->Create(db_guid, map, PHASEMASK_NORMAL, Id, x, y, z, o))
creature->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMaskForSpawn());
creature = new Creature();
if (!creature->LoadCreatureFromDB(db_guid, map))