Trouble updating with BlueG's mysql R7
#1

pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    if(is_logged[playerid] == true)
    {
        new
            mQuery[128];
           
        new
            pName[MAX_PLAYER_NAME];
           
        GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
       
        format(mQuery, sizeof(mQuery), "SELECT `id` from `accounts` WHERE `username` = '%s'", pName);
        mysql_function_query(myConnection, mQuery, true, "SavePlayerData", "i", playerid);
    }
    return 1;
}
pawn Code:
forward public SavePlayerData(playerid);
public SavePlayerData(playerid)
{
    new
        mQuery[500];
       
    new
            chr,
            cyr,
            cday,
            cmo,
            cmin,
            csec;

    getdate(cyr, cmo, cday);
    gettime(chr, cmin, csec);
       
    format(mQuery, sizeof(mQuery), "UPDATE `accounts` SET `Admin` = '%d', `CustomSkin` = '%d', `ActiveBuff` = '%d', `Killstreak` = '%d', `LastVisitedMonth` = '%d', `LastVisitedDay` = '%d', `LastVisitedYear` = '%d', `LastVisitedHour` = '%d', `LastVisitedMinute` = '%d'",
        PlayerInfo[playerid][Admin], PlayerInfo[playerid][CustomSkin], PlayerInfo[playerid][ActiveBuff],
        PlayerInfo[playerid][Killstreak], cmo, cday, cyr, chr, cmin
    );
    mysql_function_query(myConnection, mQuery, false, "", "");
   
    for(new i; i < 13; i++)
    {
        format(mQuery, sizeof(mQuery), "UPDATE `weapons` SET `weapon` = '%d', `ammo` = '%d' WHERE `id` = '%d' AND `index` = '%d'",
            PlayerInfo[playerid][SpawnWeapon][i], PlayerInfo[playerid][SpawnAmmo][i], PlayerInfo[playerid][pAccountID], i
        );
        mysql_function_query(myConnection, mQuery, false, "", "");
    }
    for(new i; i < 46; i++)
    {
        format(mQuery, sizeof(mQuery), "UPDATE `weaponkills` SET `weapon` = '%d', `kills` = '%d' WHERE `id` = '%d'",
            i, PlayerInfo[playerid][WeaponKills][i], PlayerInfo[playerid][pAccountID]
        );
        mysql_function_query(myConnection, mQuery, false, "", "");
    }
    is_logged[playerid] = false;
    return 1;
}
The first 'mQuery' works perfectly fine, and updates everything it should - the problem is located on my linked tables (`weaponkills`, `weapons`) Every time I change something in-game it never updates the database, and this is the function that actually updates the table so I was wondering if anyone could figure out what's wrong because I've been trying to figure this out for an hour or so and I'm completely clueless.
Reply
#2

Have you try debugging it? Post the code error and will check what's wrong with your queries.
Reply
#3

I've tried debugging it to my best ability. There are no mysql errors, mysql_debug is set to 1 and I've checked server log, there's nothing that's wrong with the query apparently but it's just not working. Everything inside of the callback runs, just doesn't update properly.
Reply
#4

Sorry if this doesn't help but your query logicS seem ...

First query, there is no where. The query will update every account.

Third query, what?

FOR i TO 46 DO
UPDATE `weaponkills` SET `weapon` = '%d', `kills` = '%d' WHERE `id` = '%d'
endfor

UPDATE `weaponkills` SET `weapon` = '0', `kills` = '1000' WHERE `id` = 'Kar'
UPDATE `weaponkills` SET `weapon` = '1', `kills` = '1000' WHERE `id` = 'Kar'
UPDATE `weaponkills` SET `weapon` = '2', `kills` = '1000' WHERE `id` = 'Kar'
UPDATE `weaponkills` SET `weapon` = '3', `kills` = '1000' WHERE `id` = 'Kar'
...

Say what? it 'Looks right' but then again, it's just setting weapon to INDEX and kills to whatever that INDEX'd variable is to Kar.

Lastly...

pawn Code:
forward public SavePlayerData(playerid);
public SavePlayerData(playerid)
Say what?

Lastly again,

You haven't really said whats the problem. If it's that the weapon kills isn't being set for EACH weapon, I showed you the issue above.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)