stock SavePlayer(playerid)
{
new query[126], pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
GetPlayerPos(playerid, Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2]);
format(query, sizeof(query), "UPDATE accounts SET Name = '%s', Password = '%s', PlayerX = '%f', PlayerY = '%f', PlayerZ = '%f' WHERE Name = '%s'", pName, Player[playerid][Password], Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2], pName);
mysql_query(query);
printf("[server] Player ID %d (%s) has been saved into the database.", playerid, pName);
}
[18:25:45] CMySQLHandler::Query(UPDATE accounts SET Name = 'Steve_Malcom', Password = '', PlayerX = '1962.481079', PlayerY = '1342.575927', PlayerZ = '15.4) - An error has occured. (Error ID: 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 ''15.4' at line 1)
case 1:
{
if(response)
{
new query[126], pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(query, sizeof(query), "INSERT INTO accounts VALUES ('%s', '%s')", pName, inputtext);
mysql_query(query);
SendClientMessage(playerid, COLOR_WHITE, "You have successfully registered into the server!");
SetSpawnInfo(playerid, 1, 299, 1, 2, 3, 1, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
}
[18:25:23] CMySQLHandler::Query(INSERT INTO accounts VALUES ('Steve_Malcom', 'passhere')) - An error has occured. (Error ID: 1136, Column count doesn't match value count at row 1)
Not sure about the UPDATE query but you should seriously change the way you save. Name does not change unless it is done by the script, so does password; thus those need to be updated when necessary and not every time a player disconnects.
About the INSERT query, you have more columns than 2 in the table. You can avoid writing the columns but you have to specify all the values (unless there are default values which you can ignore and those should be always last). For now, add the name and password columns along with the query. |
case 1:
{
if(response)
{
new query[126], pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(query, sizeof(query), "INSERT INTO accounts VALUES (`%s`, `%s`)", pName, inputtext);
mysql_query(query);
SendClientMessage(playerid, COLOR_WHITE, "You have successfully registered into the server!");
SetSpawnInfo(playerid, 1, 299, 1, 2, 3, 1, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
}
}
[18:50:42] CMySQLHandler::Query(INSERT INTO accounts VALUES (`Steve_Malcom`, `passytest`)) - An error has occured. (Error ID: 1054, Unknown column 'Steve_Malcom' in 'field list')
stock SavePlayer(playerid)
{
new query[126], pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
GetPlayerPos(playerid, Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2]);
format(query, sizeof(query), "UPDATE accounts SET Name = `%s`, Password = `%s`, PlayerX = `%f`, PlayerY = `%f`, PlayerZ = `%f` WHERE Name = `%s`", pName, Player[playerid][Password], Player[playerid][Position][0], Player[playerid][Position][1], Player[playerid][Position][2], pName);
mysql_query(query);
printf("[server] Player ID %d (%s) has been saved into the database.", playerid, pName);
}
[18:50:49] CMySQLHandler::Query(UPDATE accounts SET Name = `Steve_Malcom`, Password = ``, PlayerX = `1958.378295`, PlayerY = `1343.157226`, PlayerZ = `15.3) - An error has occured. (Error ID: 1054, Unknown column 'Steve_Malcom' in 'field list')
No, strings need apostrophes around them like '%s' or '%e' (escaped). If using `, it thinks those are columns which are not.
|
Your update query's problem is your query size, increase it to ~300 at least (not sure how you would save password but lets say 100 characters is that if you hash, each names are 24 each, each floats are 4+1+6 each(precision) that'll take you to 100+48+33 alone, were to lazy to count other characters in your query, but it surely is more than 126.
However if you follow Konstantinoses tips it'll probably be enough (I.E if you use player sqlid as index and only update the pos) |
Update, why would you use an old version?
And you aren't even hashing passwords, shame on you. |
format(query, sizeof(query), "INSERT INTO `accounts` VALUES (`%s`, `%s`);", pName, inputtext);
Try
pawn Код:
|
[01:10:05] CMySQLHandler::Query(INSERT INTO `accounts` VALUES (`Shady_EG`, `mypass123`);) - An error has occured. (Error ID: 1054, Unknown column 'Shady_EG' in 'field list')
Increase query length. Your query is getting cut off half way.
EDIT: Second problem. Set default values in mysql table and try to insert like these: [sql]INSERT INTO `Users` SET `UserName`='%s', `Password`='%s'[/sql] Dont forget to escape strings for safety. |
[01:32:44] CMySQLHandler::Query(INSERT INTO `accounts` SET Name`='Keith_Lawrence', `Password`='123456') - An error has occured. (Error ID: 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 '`='Keith_Lawrence', `Password`='123456'' at line 1)
You made an SQL tutorial yet you don't know how to create an INSERT statement.
INSERT INTO table (columns) VALUES (values); |
You made an SQL tutorial yet you don't know how to create an INSERT statement.
INSERT INTO table (columns) VALUES (values); |
lol u dont understand what I said also insert can be used in this format too read the 3rd page in my tut also I was in mob pc got sicked so I cant type the codes just saying concept
|
Got an error.
pawn Код:
|
You made an SQL tutorial yet you don't know how to create an INSERT statement.
INSERT INTO table (columns) VALUES (values); |