SA-MP Forums Archive
MySQL String problem - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: MySQL String problem (/showthread.php?tid=257032)



String problem - Bates - 23.05.2011

Hi guys, i have a severe problem. I implemented MySQL into my script, and one vital part is the SavePlayerData function. This is my code:

pawn Код:
public SavePlayerData( playerid )
{
    printf("TEST1");
    if(Player[playerid][Authenticated] == 1 )
    {
        printf("TEST2");
        new saveQuery[3643]; // This makes the server crash

        GetPlayerPos( playerid, Player[playerid][LastX], Player[playerid][LastY], Player[playerid][LastZ]);
        Player[playerid][LastInterior] = GetPlayerInterior( playerid );
        Player[playerid][LastWorld] = GetPlayerVirtualWorld(playerid);
        GetPlayerHealth(playerid, Player[playerid][LastHealth]);
        GetPlayerArmour(playerid, Player[playerid][LastArmour]);
        printf("TEST1");
        format(saveQuery, sizeof(saveQuery), "UPDATE playerAccounts SET Banned = '%d', SecondsLoggedIn = '%d', LastSkin = '%d', Money = '%d', BankMoney = '%d'", Player[playerid][Banned], Player[playerid][SecondsLoggedIn], Player[playerid][LastSkin], Player[playerid][Money], Player[playerid][BankMoney]);

        format(saveQuery, sizeof(saveQuery), "%s, LastInterior = '%d', LastWorld = '%d', LastHealth = '%f', LastArmour = '%f', LastX = '%f', LastY = '%f', LastZ = '%f'", saveQuery, Player[playerid][LastInterior], Player[playerid][LastWorld], Player[playerid][LastHealth], Player[playerid][LastArmour], Player[playerid][LastX], Player[playerid][LastY], Player[playerid][LastZ]);

        format(saveQuery, sizeof(saveQuery), "%s, Accent = '%s', AdminLevel = '%d', Job = '%d', WepSlot0 = '%d', WepSlot1 = '%d', WepSlot2 = '%d', WepSlot3 = '%d'", saveQuery, Player[playerid][Accent], Player[playerid][AdminLevel], Player[playerid][Job], Player[playerid][WepSlot0], Player[playerid][WepSlot1], Player[playerid][WepSlot2], Player[playerid][WepSlot3]);

        format(saveQuery, sizeof(saveQuery), "%s, Ammo0 = '%d', Ammo1 = '%d', Ammo2 = '%d', Ammo3 = '%d, Ammo11 = '%d'", saveQuery, Player[playerid][Accent], Player[playerid][AdminLevel], Player[playerid][Job], Player[playerid][Ammo0], Player[playerid][Ammo1], Player[playerid][Ammo2], Player[playerid][Ammo3], Player[playerid][Ammo11]);

        format(saveQuery, sizeof(saveQuery), "%s, Ammo4 = '%d', Ammo5 = '%d', Ammo6 = '%d', Ammo7 = '%d', Ammo8 = '%d', Ammo9 = '%d', Ammo10 = '%d'", saveQuery, Player[playerid][Ammo4], Player[playerid][Ammo5], Player[playerid][Ammo6], Player[playerid][Ammo7], Player[playerid][Ammo8], Player[playerid][Ammo9], Player[playerid][Ammo10]);
       
        format(saveQuery, sizeof(saveQuery), "%s, WepSlot4 = '%d', WepSlot5 = '%d', WepSlot6 = '%d', WepSlot7 = '%d', WepSlot8 = '%d', WepSlot9 = '%d', WepSlot10 = '%d'", saveQuery, Player[playerid][WepSlot4], Player[playerid][WepSlot5], Player[playerid][WepSlot6], Player[playerid][WepSlot7], Player[playerid][WepSlot8], Player[playerid][WepSlot9], Player[playerid][WepSlot10]);

        format(saveQuery, sizeof(saveQuery), "%s, WepSlot11 = '%d', Materials = '%d', PlayingHours = '%d'", saveQuery, Player[playerid][WepSlot11], Player[playerid][Materials], Player[playerid][PlayingHours]);

        format(saveQuery, sizeof(saveQuery), "%s, Warning1 = '%s', Warning2 = '%s', Warning3 = '%s', Hospitalized = '%d', FirstLogin = '%d', PrisonDuration = '%d', PrisonID = '%d', PhoneN = '%d, HelperLevel = '%d'", saveQuery, Player[playerid][Warning1], Player[playerid][Warning2], Player[playerid][Warning3], Player[playerid][Hospitalized], Player[playerid][FirstLogin],
        Player[playerid][PrisonDuration], Player[playerid][PrisonID], Player[playerid][PhoneN], Player[playerid][HelperLevel]);

        format(saveQuery, sizeof(saveQuery), "%s, House = '%d', Muted = '%d', oMuted = '%d', nMuted = '%d', Identity = '%d', Age = '%d', ContractPrice = '%d', Contract = '%s', Tutorial = '%d', CriminalOffences = '%d', Offence1 = '%s', Offence2 = '%s'", saveQuery, Player[playerid][House], Player[playerid][Muted],
        Player[playerid][oMuted], Player[playerid][nMuted], Player[playerid][Identity], Player[playerid][Age], Player[playerid][ContractPrice], Player[playerid][Contract], Player[playerid][Tutorial], Player[playerid][CriminalOffences], Player[playerid][Offence1], Player[playerid][Offence2]);
       
        format(saveQuery, sizeof(saveQuery), "%s, Offence3 = '%s', Offence4 = '%s', Offence5 = '%s', Offence6 = '%s', Gender = '%d', Materials = '%d', Pot = '%d', Business = '%d', PhoneBook = '%d', InabilityToMatrun = '%d', InabilityToDropCar = '%d', CantFish = '%d', CollectedFish = '%d'", saveQuery, Player[playerid][Offence3], Player[playerid][Offence4], Player[playerid][Offence5],
        Player[playerid][Offence6], Player[playerid][Gender], Player[playerid][Materials], Player[playerid][Pot], Player[playerid][Business], Player[playerid][PhoneBook], Player[playerid][InabilityToMatrun], Player[playerid][InabilityToDropCar], Player[playerid][CantFish], Player[playerid][CollectedFish]);

        format(saveQuery, sizeof(saveQuery), "%s, Rope = '%d', Rags = '%d', FailedHits = '%d', SuccessfulHits = '%d', Radio = '%d', CollegeLaw = '%d', CollegeMedia = '%d', CollegeEng = '%d', CollegeMath = '%d', CollegeChem = '%d', MarriedTo = '%s', FightBox = '%d'", saveQuery, Player[playerid][Rope], Player[playerid][Rags], Player[playerid][FailedHits], Player[playerid][SuccessfulHits], Player[playerid][Radio], Player[playerid][CollegeLaw],
        Player[playerid][CollegeMedia], Player[playerid][CollegeEng], Player[playerid][CollegeMath], Player[playerid][CollegeChem], Player[playerid][MarriedTo], Player[playerid][FightBox]);
   
        format(saveQuery, sizeof(saveQuery), "%s, Note = '%s', MeActions = '%d', AdsPlaced = '%d', MatrunsExecuted = '%d', HasMapApp = '%d', HasAdApp = '%d', HasPagesApp = '%d', HasRadioApp = '%d', AnsweredQuizQuestions = '%d', AchievementRank = '%d', Tester = '%d'", saveQuery,
        Player[playerid][Note], Player[playerid][MeActions], Player[playerid][AdsPlaced], Player[playerid][MatrunsExecuted], Player[playerid][HasMapApp],
        Player[playerid][HasAdApp], Player[playerid][HasPagesApp], Player[playerid][HasRadioApp], Player[playerid][AnsweredQuizQuestions], Player[playerid][AchievementRank], Player[playerid][Tester]);

        format(saveQuery, sizeof(saveQuery), "%s, CheckBalance = '%d', ReportBanStatus = '%d', AdminDuty = '%d', CarKeys = '%d', Kills = '%d', Deaths = '%d', CantFindGold = '%d', GoldCollected = '%d', GoldAttempts = '%d', CellphoneConsole = '%d'", saveQuery, Player[playerid][CheckBalance], Player[playerid][ReportBanStatus], Player[playerid][AdminDuty],
        Player[playerid][CarKeys], Player[playerid][Kills], Player[playerid][Deaths], Player[playerid][CantFindGold], Player[playerid][GoldCollected], Player[playerid][GoldAttempts], Player[playerid][CellphoneConsole]);

        format(saveQuery, sizeof(saveQuery), "%s, FightKungfu = '%d', Group = '%d', GroupRank = '%d', LastIP = '%s', FightGrabkick = '%d', FightKneehead = '%d', VipRank = '%d', WalkieTalkie = '%d', BankStatus = '%d', PhoneCredit = '%d', PlayerSkinSlot1 = '%d', PlayerSkinSlot2 = '%d', PlayerSkinSlot3 = '%d', AdminPIN = '%d', AdminSkin = '%d', WalkieFrequency = '%d', PortableRadio = '%d' WHERE InternalID = '%d'", saveQuery, Player[playerid][FightKungfu],
        Player[playerid][Group], Player[playerid][GroupRank], Player[playerid][LastIP], Player[playerid][FightGrabkick], Player[playerid][FightKneehead], Player[playerid][VipRank], Player[playerid][WalkieTalkie], Player[playerid][BankStatus], Player[playerid][PhoneCredit], Player[playerid][PlayerSkinSlot1], Player[playerid][PlayerSkinSlot2], Player[playerid][PlayerSkinSlot3],
        Player[playerid][AdminPIN], Player[playerid][AdminSkin], Player[playerid][WalkieFrequency], Player[playerid][PortableRadio], Player[playerid][InternalID]);
        printf("TEST45");
        mysql_query(saveQuery);
    }
    return 1;
}
If i set the saveQuery string to anything below 3643(or 3643), the server crashes. If i set the saveQuery to more than 3643(3644 and up), everything works but "TEST45" won't show up in the console. Help please!

Thanks in advance
Bates


Re: MySQL String problem - Bates - 24.05.2011

I really need some help one this one.


Re: MySQL String problem - Snipa - 24.05.2011

You're formatting the same string over and over.. Why not format,query, format, query, etc?


Re: MySQL String problem - Bates - 25.05.2011

I'll give it a try, but i thought it could be inefficient.


Re: MySQL String problem - Mean - 26.05.2011

Quote:
Originally Posted by Bates
Посмотреть сообщение
I'll give it a try, but i thought it could be inefficient.
No because

pawn Код:
new str[ 128 ];
format( str, sizeof str, "a" );
format( str, sizeof str, "b" );
format( str, sizeof str, "c" );
format( str, sizeof str, "d" );
format( str, sizeof str, "e" );
format( str, sizeof str, "f" );
SendClientMessage( playerid, -1, str );
Would just print f because format replaces the string, it doesn't add a new one.

So if you do
pawn Код:
new query[ qsize ];
format( query, sizeof query, "UPDATE `db`.`table` SET `something1` = '1' WHERE `table`.`trololo` = 'myn'" );
format( query, sizeof query, "UPDATE `db`.`table` SET `something1` = '1' WHERE `table`.`trololo` = 'myn2'" );
format( query, sizeof query, "UPDATE `db`.`table` SET `something1` = '1' WHERE `table`.`trololo` = 'myn3'" );
format( query, sizeof query, "UPDATE `db`.`table` SET `something1` = '1' WHERE `table`.`trololo` = 'myn4'" );
mysql_query( query );
It executes the last query (myn4 query).


Re: MySQL String problem - Sergei - 26.05.2011

Use strcat.

And if you knew '' was used only for strings and that spaces are useless you would probably not crash your server.

And also you don't need to save all stuff on disconnect. Save it when it actually changes. I'm sure adminlevel doesn't change every session, does it?


Re: MySQL String problem - KoczkaHUN - 26.05.2011

use strcat()
UPDATE: sorry I haven't seen the very last post.