SavePlayer Mysql
#1

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..
Reply
#2

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

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?
Reply
#4

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));

Reply
#5

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` = ...

Reply
#6

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.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)