SA-MP Forums Archive
SavePlayer Mysql - 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: SavePlayer Mysql (/showthread.php?tid=597951)



SavePlayer Mysql - danielpalade - 06.01.2016

This is my saveplayer.
Код:
stock SavePlayer(playerid)
{
	new query[1024], aName[MAX_PLAYER_NAME];
	GetPlayerName(playerid, aName, sizeof(aName));
	mysql_format(mysql, query, sizeof(query), "UPDATE accounts SET AdminLevel = '%d', Skin = '%d', Money = '%d', Level = '%d', Job = '%d', Materials = '%d', Drugs ='%d', Lic1 = '%d', Warns ='%d', Mute = '%d', Group = '%d', GroupRank = '%d', Spawn = '%d' WHERE ID = '%d'", 
	pInfo[playerid][pAdminLevel], GetPlayerSkin(playerid), GetPlayerMoney(playerid), GetPlayerScore(playerid), pInfo[playerid][pJob], pInfo[playerid][pMaterials], pInfo[playerid][pDrugs], pInfo[playerid][pLic1], pInfo[playerid][pWarns], pInfo[playerid][pMute], pInfo[playerid][pGroup], pInfo[playerid][pGroupRank], pInfo[playerid][pSpawn], pInfo[playerid][pID]);
	mysql_tquery(mysql, query);
	
	printf("Player ID %d (%s) has been saved", playerid, GetName(playerid));
}
Whenever someone disconnects from the server their data should save, but I get this error in the mysq log.

Код:
[01:44:33] [DEBUG] mysql_format - connection: 1, len: 1024, format: "UPDATE accounts SET AdminLevel = '%d', Skin = '%d', Money = '%d', Level = '%d', Job = '%d', Materials = '%d', Drugs ='%d', Lic1 ..."
[01:44:33] [DEBUG] mysql_tquery - connection: 1, query: "UPDATE accounts SET AdminLevel = '3', Skin = '217', Money = '749", callback: "(null)", format: "(null)"
[01:44:33] [DEBUG] CMySQLQuery::Execute[] - starting query execution
[01:44:33] [ERROR] CMySQLQuery::Execute[] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Group = '0', GroupRank = '0', Spawn = '0' WHERE ID = '35'' at line 1
[01:44:33] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError
I have no idea what I did wrong..


Re: SavePlayer Mysql - Vince - 07.01.2016

GROUP is an SQL keyword and as such shouldn't be used as a column name.


Re: SavePlayer Mysql - danielpalade - 07.01.2016

Quote:
Originally Posted by Vince
Посмотреть сообщение
GROUP is an SQL keyword and as such shouldn't be used as a column name.
Could you explain better? What do I need to change?


Re: SavePlayer Mysql - Mencent - 07.01.2016

Hello!

When you write "Group" like this:
PHP код:
`Group` = '%d' 
then it will be work.
PHP код:
stock SavePlayer(playerid)
{
    new 
query[1024], aName[MAX_PLAYER_NAME];
    
GetPlayerName(playeridaNamesizeof(aName));
    
mysql_format(mysqlquerysizeof(query), "UPDATE accounts SET AdminLevel = '%d', Skin = '%d', Money = '%d', Level = '%d', Job = '%d', Materials = '%d', Drugs ='%d', Lic1 = '%d', Warns ='%d', Mute = '%d', `Group` = '%d', GroupRank = '%d', Spawn = '%d' WHERE ID = '%d'",
    
pInfo[playerid][pAdminLevel], GetPlayerSkin(playerid), GetPlayerMoney(playerid), GetPlayerScore(playerid), pInfo[playerid][pJob], pInfo[playerid][pMaterials], pInfo[playerid][pDrugs], pInfo[playerid][pLic1], pInfo[playerid][pWarns], pInfo[playerid][pMute], pInfo[playerid][pGroup], pInfo[playerid][pGroupRank], pInfo[playerid][pSpawn], pInfo[playerid][pID]);
    
mysql_tquery(mysqlquery);
    
printf("Player ID %d (%s) has been saved"playeridGetName(playerid));




Re: SavePlayer Mysql - BroZeus - 07.01.2016

He means that Group is a MySQL reserved keyword like in PAWN if and else are keywords so they shouldn't be used as a variable name, similarly Group shouldn't be used as column name.
It shouldn't be used but you can use it you just need to enclose Group around ``. So query becomes
Quote:

... `Group` = ...




Re: SavePlayer Mysql - HarrisonC - 07.01.2016

Might not be valid to your case but for future reference, avoid using 'Desc' as this is another column name along with 'Group' that cannot be used due to it being a SQL keyword.