Saving to DB from Player enum. Possible cause of fault?
#9

Yeah, you need to do something like the second bit. There's no insert ID associated with an UPDATE statement (as far as I know), and that query wouldn't do anything significant anyway because you're still trying to use pAccountID (which is 0) in it.

This is my suggestion for that second function, and it just checks to see if pAccountID is 0 before fetching the player's account ID. In general--especially if your SQL queries aren't threaded--you want to make as few SQL calls as possible.

pawn Код:
stock SavePlayerAccount(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new EscapedName[MAX_PLAYER_NAME];
        mysql_real_escape_string(GetName(playerid), EscapedName);
        //UpdatePlayerVariables(playerid);
        if(CheckExist(playerid) == 0)
        {
            format(query, sizeof(query), "INSERT INTO `Accounts` (Username, Password) VALUES('%s', '%s')",EscapedName, Player[playerid][pPassword]);
            mysql_query(query);
            Player[playerid][pAccountID] = mysql_insert_id();
        }
        if (Player[playerid][pAccountID] == 0) // don't do an extra query if you don't have to
        {
                    mysql_query("SELECT AccountID FROM Accounts where Username = '%s'", EscapedName);
                    mysql_store_result();
                    Player[playerid][pAccountID] = mysql_fetch_int();
        }
        format(query, sizeof(query), "UPDATE Accounts SET AccountID=%d, Username='%s', Password='%s', Money=%d, Level=%d, Skin=%d, Health=%f, Armour=%f, PosX=%f, PosY=%f, PosZ=%f, Angle=%f, Ethnicity=%d, Gender=%d, Age=%d, DefaultSpawn=%d, PhoneType=%d, PhoneNumber=%d, World=%d, Interior=%d, VehSlots=%d, Admin=%d WHERE AccountID=%d",
        Player[playerid][pAccountID],Player[playerid][pUsername],Player[playerid][pPassword],Player[playerid][pMoney],Player[playerid][pLevel],Player[playerid][pSkin],Player[playerid][pHealth],Player[playerid][pArmour],
        Player[playerid][pPosX],Player[playerid][pPosY],Player[playerid][pPosZ],Player[playerid][pAngle],Player[playerid][pEthnicity],Player[playerid][pGender],Player[playerid][pAge],Player[playerid][pDefaultSpawn],Player[playerid][pPhoneType],
        Player[playerid][pPhoneNumber],Player[playerid][pWorld], Player[playerid][pInterior],Player[playerid][pVehSlots],Player[playerid][pAdmin],Player[playerid][pAccountID]);
        mysql_query(query);
        mysql_free_result();
        SaveContacts(playerid);
    }
    return 1;
}
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 2 Guest(s)