PDA

Просмотр полной версии : [Вопрос] Ошибка при сохранении аккаунта



Craick
15.06.2016, 08:52
При сохранении аккаунта вот такая ошибка

[07:43:13] [ERROR] CMySQLQuery::Execute[()] - (error #1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`Referal` = ,`Nation` = 0,`Passport` = 0,`Member` = 0,`Rank` = 0,`Model` = 0,`Pa' at line 1

В этом стоке


stock SavePlayer(i)
{
new scr[280];
new string[330];
f("UPDATE `accounts` SET");
format(scr, sizeof(scr), "`Level` = %d,", Player[i][pLevel]);
strcat(string, scr);
format(scr, sizeof(scr), "`Skin` = %d,", Player[i][pSkin]);
strcat(string, scr);
format(scr, sizeof(scr), "`Sex` = %d,", Player[i][pSex]);
strcat(string, scr);
format(scr, sizeof(scr), "`Money` = %d,", Player[i][pMoney]);
strcat(string, scr);
format(scr, sizeof(scr), "`Admin` = %d,", Player[i][pAdmin]);
strcat(string, scr);
format(scr, sizeof(scr), "`Exp` = %d,", Player[i][pExp]);
strcat(string, scr);
format(scr, sizeof(scr), "`Age` = %d,", Player[i][pAge]);
strcat(string, scr);
format(scr, sizeof(scr), "`Mail` = %s,", Player[i][pMail]);
strcat(string, scr);
format(scr, sizeof(scr), "`Referal` = %s,", Player[i][pReferal]);
strcat(string, scr);
format(scr, sizeof(scr), "`Nation` = %d,", Player[i][pNation]);
strcat(string, scr);
format(scr, sizeof(scr), "`Passport` = %d,", Player[i][pPassport]);
strcat(string, scr);
format(scr, sizeof(scr), "`Member` = %d,", Player[i][pMember]);
strcat(string, scr);
format(scr, sizeof(scr), "`Rank` = %d,", Player[i][pRank]);
strcat(string, scr);
format(scr, sizeof(scr), "`Model` = %d,", Player[i][pModel]);
strcat(string, scr);
format(scr,sizeof(scr), "`Pass` = '%s,'", Player[i][pPass]);
strcat(string,scr);
format(scr, sizeof(scr), "WHERE `Name` = '%s'", Player[i][pName]);
strcat(string, scr, sizeof(string));
mysql_function_query(ConnectMySQL, string, false, "", "");
Player[i][pMoney] = Money(i);
}

ziggi
15.06.2016, 09:00
Не хватает размера string.
P.S. У тебя ещё лишняя запятая в Pass и нет пробела после SET и перед WHERE.

#Johnson
17.06.2016, 00:56
stock SavePlayer(i)
{
new scr[43];
new string[181+112]; //Подсчитал точное кол-во использованных ячеек
f("UPDATE `accounts` SET ");
format(scr, sizeof(scr), "`Level` = %d,", Player[i][pLevel]);
strcat(string, scr);
format(scr, sizeof(scr), "`Skin` = %d,", Player[i][pSkin]);
strcat(string, scr);
format(scr, sizeof(scr), "`Sex` = %d,", Player[i][pSex]);
strcat(string, scr);
format(scr, sizeof(scr), "`Money` = %d,", Player[i][pMoney]);
strcat(string, scr);
format(scr, sizeof(scr), "`Admin` = %d,", Player[i][pAdmin]);
strcat(string, scr);
format(scr, sizeof(scr), "`Exp` = %d,", Player[i][pExp]);
strcat(string, scr);
format(scr, sizeof(scr), "`Age` = %d,", Player[i][pAge]);
strcat(string, scr);
format(scr, sizeof(scr), "`Mail` = %s,", Player[i][pMail]);
strcat(string, scr);
format(scr, sizeof(scr), "`Referal` = %s,", Player[i][pReferal]);
strcat(string, scr);
format(scr, sizeof(scr), "`Nation` = %d,", Player[i][pNation]);
strcat(string, scr);
format(scr, sizeof(scr), "`Passport` = %d,", Player[i][pPassport]);
strcat(string, scr);
format(scr, sizeof(scr), "`Member` = %d,", Player[i][pMember]);
strcat(string, scr);
format(scr, sizeof(scr), "`Rank` = %d,", Player[i][pRank]);
strcat(string, scr);
format(scr, sizeof(scr), "`Model` = %d,", Player[i][pModel]);
strcat(string, scr);
format(scr,sizeof(scr), "`Pass` = '%s'", Player[i][pPass]);
strcat(string,scr);
format(scr, sizeof(scr), " WHERE `Name` = '%s'", Player[i][pName]);
strcat(string, scr, sizeof(string));
mysql_function_query(ConnectMySQL, string, false, "", "");
Player[i][pMoney] = Money(i);
}

Found
17.06.2016, 18:15
Для чего использовать несколько раз функции format и strcat, когда можно сделать всё в одной.

Поправил ошибки.


format( string, sizeof string,
"UPDATE `accounts`\
SET\
`Level` = %d,\
`Skin` = %d,\
`Sex` = %d,\
`Money` = %d,\
`Admin` = %d,\
`Exp` = %d,\
`Age` = %d,\
`Mail` = '%s',\
`Referal` = '%s',\
`Nation` = %d,\
`Passport` = %d,\
`Member` = %d,\
`Rank` = %d,\
`Model` = %d,\
`Pass` = '%s'\
WHERE `Name` = '%s'",
Player[i][pLevel],
Player[i][pSkin],
Player[i][pSex],
Player[i][pMoney],
Player[i][pExp],
Player[i][pAge],
Player[i][pMail],
Player[i][pReferal],
Player[i][pNation],
Player[i][pPassport],
Player[i][pMember],
Player[i][pRank],
Player[i][pModel],
Player[i][pPass],
Player[i][pName]
);

mysql_function_query( ConnectMySQL, string, false, "", "" );