SA-MP Forums Archive
Query string - 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)
+--- Thread: Query string (/showthread.php?tid=657519)



Query string - KinderClans - 09.08.2018

Since my saving query is too long, i used strcat and made this:

pawn Код:
strcat(query, "UPDATE `players` SET `LastLogin` = '%s', `Kills` = %d, `Deaths` = %d, `Score` = %i, `Money` = %i, `Level` = %d, `WantedLevel` = %d, `Skin` = %d, `PlayerTeam` = %d, `PlayerGender` = %d,\", sizeof(Query));
    strcat(query, ,"
`PlayingHours` = %d, `PlayingMinutes` = %d, `FirstSpawn` = %d, `Job` = %d, `Bank` = %d, `NoPm` = %d, `Diseases` = %d\", sizeof(Query));
    strcat(query, ,"
`VehicleLicense` = %d, `MotorbikeLicense` = %d, `PlaneLicense` = %d, `HelicopterLicense` = %d, `BankDeposited` = %d, `BankWithdrawal` = %d WHERE `ID`=%d",\", sizeof(Query));
But getting "possible non terminated string, undefined symbol UPDATE" and so on.

I'm sure i did something wrong, but what?


Re: Query string - GRiMMREAPER - 09.08.2018

You have a lot of syntax error (query =/= Query) and you escaped backward slashes, hence why the possible non terminated string error. Try this code:

pawn Код:
strcat(query, "UPDATE `players` SET `LastLogin` = '%s', `Kills` = %d, `Deaths` = %d, `Score` = %i, `Money` = %i, `Level` = %d, `WantedLevel` = %d, `Skin` = %d, `PlayerTeam` = %d, `PlayerGender` = %d,", sizeof(query));
strcat(query,"`PlayingHours` = %d, `PlayingMinutes` = %d, `FirstSpawn` = %d, `Job` = %d, `Bank` = %d, `NoPm` = %d, `Diseases` = %d", sizeof(query));
strcat(query,"`VehicleLicense` = %d, `MotorbikeLicense` = %d, `PlaneLicense` = %d, `HelicopterLicense` = %d, `BankDeposited` = %d, `BankWithdrawal` = %d WHERE `ID`=%d", sizeof(query));



Re: Query string - KinderClans - 09.08.2018

Thanks but now im getting "expression has no effect" after the query string.

Full code:

pawn Код:
UpdatePlayerData(playerid)
{
    if(Player[playerid][IsLoggedIn] == false) return 0;

    new query[2000];
    strcat(query, "UPDATE `players` SET `LastLogin` = '%s', `Kills` = %d, `Deaths` = %d, `Score` = %i, `Money` = %i, `Level` = %d, `WantedLevel` = %d, `Skin` = %d, `PlayerTeam` = %d, `PlayerGender` = %d,", sizeof(query));
    strcat(query,"`PlayingHours` = %d, `PlayingMinutes` = %d, `FirstSpawn` = %d, `Job` = %d, `Bank` = %d, `NoPm` = %d, `Diseases` = %d", sizeof(query));
    strcat(query,"`VehicleLicense` = %d, `MotorbikeLicense` = %d, `PlaneLicense` = %d, `HelicopterLicense` = %d, `BankDeposited` = %d, `BankWithdrawal` = %d WHERE `ID`= %d", sizeof(query));
    ReturnDate(),
    Player[playerid][Kills],
    Player[playerid][Deaths],
    GetPlayerScore(playerid),
    GetPlayerMoney(playerid),
    Player[playerid][Level],
    GetPlayerWantedLevel(playerid),
    GetPlayerSkin(playerid),
    GetPlayerTeam(playerid),
    Player[playerid][PlayerGender],
    Player[playerid][PlayingHours],
    Player[playerid][PlayingMinutes],
    Player[playerid][FirstSpawn],
    Player[playerid][Job],
    Player[playerid][Bank],
    Player[playerid][NoPm],
    Player[playerid][Diseases],
    Player[playerid][VehicleLicense],
    Player[playerid][MotorbikeLicense],
    Player[playerid][PlaneLicense],
    Player[playerid][HelicopterLicense],
    Player[playerid][BankDeposited],
    Player[playerid][BankWithdrawal],
    Player[playerid][ID]);

    mysql_tquery(g_SQL, query);
    return 1;
}



Re: Query string - Jefff - 09.08.2018

strcat doesnt supports %, you need use format

pawn Код:
UpdatePlayerData(playerid)
{
    if(Player[playerid][IsLoggedIn] == false) return 0;

    new query[2000],p = playerid;
    format(query,sizeof(query), "UPDATE `players` SET `LastLogin` = '%s', `Kills` = %d, `Deaths` = %d, `Score` = %i, `Money` = %i, `Level` = %d, `WantedLevel` = %d, `Skin` = %d, `PlayerTeam` = %d, `PlayerGender` = %d,",
    ReturnDate(),
    Player[p][Kills],
    Player[p][Deaths],
    GetPlayerScore(p),
    GetPlayerMoney(p),
    Player[p][Level],
    GetPlayerWantedLevel(p),
    GetPlayerSkin(p),
    GetPlayerTeam(p),
    Player[p][PlayerGender]
    );

    format(query,sizeof(query),"%s `PlayingHours` = %d, `PlayingMinutes` = %d, `FirstSpawn` = %d, `Job` = %d, `Bank` = %d, `NoPm` = %d, `Diseases` = %d", query,
    Player[p][PlayingHours],
    Player[p][PlayingMinutes],
    Player[p][FirstSpawn],
    Player[p][Job],
    Player[p][Bank],
    Player[p][NoPm],
    Player[p][Diseases]
    );

    format(query,sizeof(query),"%s `VehicleLicense` = %d, `MotorbikeLicense` = %d, `PlaneLicense` = %d, `HelicopterLicense` = %d, `BankDeposited` = %d, `BankWithdrawal` = %d WHERE `ID`= %d", query,
    Player[p][VehicleLicense],
    Player[p][MotorbikeLicense],
    Player[p][PlaneLicense],
    Player[p][HelicopterLicense],
    Player[p][BankDeposited],
    Player[p][BankWithdrawal],
    Player[p][ID]
    );

    mysql_tquery(g_SQL, query);
    return 1;
}



Re: Query string - Kraeror - 10.08.2018

You have a lot of syntax errors as GRiMMREAPER says and you can't use specifiers as Jefff saiys, the way to do it is combined of GRiMMREAPER and Jefff ideas, you have to format it first and after that you have to connect them together into another string variable using "strcat" function. Try that:
PHP код:
UpdatePlayerData(playerid)
{
    if(
Player[playerid][IsLoggedIn] == false) return 0;
    new 
query[4096];
    new 
query2[4096];
    
format(querysizeof(query), "UPDATE `players` SET `LastLogin` = '%s', `Kills` = '%d', `Deaths` = '%d', `Score` = '%i', `Money` = '%i', `Level` = '%d', `WantedLevel` = '%d', `Skin` = '%d', `PlayerTeam` = '%d', `PlayerGender` = '%d',",
    
ReturnDate(),
    
Player[playerid][Kills],
    
Player[playerid][Deaths],
    
GetPlayerScore(playerid),
    
GetPlayerMoney(playerid),
    
Player[playerid][Level],
    
GetPlayerWantedLevel(playerid),
    
GetPlayerSkin(playerid),
    
GetPlayerTeam(playerid),
    
Player[playerid][PlayerGender]);
    
strcat(query2query);
    
format(querysizeof(query), "`PlayingHours` = '%d', `PlayingMinutes` = '%d', `FirstSpawn` = '%d', `Job` = '%d', `Bank` = '%d', `NoPm` = '%d', `Diseases` = '%d',",
    
Player[playerid][PlayingHours],
    
Player[playerid][PlayingMinutes],
    
Player[playerid][FirstSpawn],
    
Player[playerid][Job],
    
Player[playerid][Bank],
    
Player[playerid][NoPm],
    
Player[playerid][Diseases]);
    
strcat(query2query);
    
format(querysizeof(query), "`VehicleLicense` = '%d', `MotorbikeLicense` = '%d', `PlaneLicense` = '%d', `HelicopterLicense` = '%d', `BankDeposited` = '%d', `BankWithdrawal` = '%d' WHERE `ID`= '%d'",
    
Player[playerid][VehicleLicense],
    
Player[playerid][MotorbikeLicense],
    
Player[playerid][PlaneLicense],
    
Player[playerid][HelicopterLicense],
    
Player[playerid][BankDeposited],
    
Player[playerid][BankWithdrawal],
    
Player[playerid][ID]);
    
strcat(query2query);
    
    
mysql_tquery(g_SQLquery2);
    return 
1;




Re: Query string - Banditul18 - 10.08.2018

Im still wonder why you want to save all that stuff in one big query. Its UpdatePlayerData function i get it, but why not save the stats when it changes? I mean i doubt PlayerGender its changeing too often so why update in a big query with other stats instead of saving it when it changes

Also dont use ' (single quote) for %d/%i/%f will slow down the query process time a bit cus mysql need to convert from string to integer to fit the number into his column


Re: Query string - Calisthenics - 10.08.2018

Quote:
Originally Posted by ******
Посмотреть сообщение
What?

I've heard a lot of rubbish claims about "performance" on these forums over the years. People with wild ideas about what is slow and what is fast, always with no evidence to support their claim, and always totally wrong.

This is possibly the most insane claim about performance issues I've even seen! There is nothing wrong with `%d` and the like!
This is what Banditul18 means: https://stackoverflow.com/questions/...numbers-or-not


Re: Query string - Banditul18 - 10.08.2018

Quote:
Originally Posted by ******
Посмотреть сообщение
What?

I've heard a lot of rubbish claims about "performance" on these forums over the years. People with wild ideas about what is slow and what is fast, always with no evidence to support their claim, and always totally wrong.

This is possibly the most insane claim about performance issues I've even seen! There is nothing wrong with `%d` and the like!
Actually thats a good point. I saw Vince(i think he has) talking about this in a topic and i took it as good. I actually never tested the response time of it or made a benchmark to see if its true or not


Re: Query string - Juvanii - 10.08.2018

- You can reduce the string query size and update the table 3 times.
- use mysql_query instead of mysql_tquery
- use '%e' instead of '%s'

PHP код:
stock UpdatePlayerData(playerid)
{
    if(
Player[playerid][IsLoggedIn] == false) return 0;
    new 
query[1024], playerid;
    
format(query,sizeof(query), "UPDATE `players` SET `LastLogin` = '%e', `Kills` = %i, `Deaths` = %i, `Score` = %i, `Money` = %i, `Level` = %i, `WantedLevel` = %i, `Skin` = %i, `PlayerTeam` = %i, `PlayerGender` = %i WHERE `ID`= %i",
    
ReturnDate(), Player[p][Kills], Player[p][Deaths], GetPlayerScore(p), GetPlayerMoney(p), Player[p][Level], GetPlayerWantedLevel(p), GetPlayerSkin(p), GetPlayerTeam(p),Player[p][PlayerGender], Player[p][ID]);
    
mysql_query(g_SQLquery);
    
format(query,sizeof(query),"UPDATE `players` SET `PlayingHours` = %i, `PlayingMinutes` = %i, `FirstSpawn` = %i, `Job` = %i, `Bank` = %i, `NoPm` = %i, `Diseases` = %i WHERE `ID`= %i",
    
Player[p][PlayingHours], Player[p][PlayingMinutes], Player[p][FirstSpawn], Player[p][Job], Player[p][Bank], Player[p][NoPm], Player[p][Diseases], Player[p][ID]);
    
mysql_query(g_SQLquery);
    
format(query,sizeof(query), "UPDATE `players` SET `VehicleLicense` = %i, `MotorbikeLicense` = %i, `PlaneLicense` = %i, `HelicopterLicense` = %i, `BankDeposited` = %i, `BankWithdrawal` = %i WHERE `ID`= %i",
    
Player[p][VehicleLicense], Player[p][MotorbikeLicense],    Player[p][PlaneLicense], Player[p][HelicopterLicense], Player[p][BankDeposited], Player[p][BankWithdrawal],    Player[p][ID]);
    
mysql_query(g_SQLquery);
    return 
1;




Re: Query string - KinderClans - 10.08.2018

Thank you everyone.