PDA

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



gangzone.ini
07.07.2015, 19:07
Не могу найти ошибку, помогите :blum3:



stock SaveAccount(playerid)
{
new query_string[1000] = "UPDATE `accounts` SET";
format(query_string, sizeof(query_string), "%s `name` = '%s',", query_string, pInfo[playerid][pName]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `password` = '%s',", query_string, pInfo[playerid][pPassword]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `kills` = '%d',", query_string, pInfo[playerid][pKills]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `deaths` = '%d',", query_string, pInfo[playerid][pDeaths]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `admin` = '%d',", query_string, pInfo[playerid][pAdmin]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `ban` = '%d',", query_string, pInfo[playerid][pBan]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `mute` = '%d',", query_string, pInfo[playerid][pMute]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `jail` = '%d',", query_string, pInfo[playerid][pJail]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s `cash` = '%d'", query_string, pInfo[playerid][pCash]);
mysql_function_query(dbHandle, query_string, false, "", "");
format(query_string, sizeof(query_string), "%s WHERE `id` = '%d'", query_string, pInfo[playerid][pID]);
mysql_function_query(dbHandle, query_string, false, "", "");
return true;
}





[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1
[18:07:27] [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 '' at line 1

Wise
07.07.2015, 19:33
Зачем ты так много раз используешь это?

mysql_function_query(dbHandle, query_string, false, "", "");
Удали их, оставь в конце только одну.

format(query_string, sizeof(query_string), "%s WHERE `id` = '%d'", query_string, pInfo[playerid][pID]);
mysql_function_query(dbHandle, query_string, false, "", "");

gangzone.ini
07.07.2015, 19:39
Зачем ты так много раз используешь это?

mysql_function_query(dbHandle, query_string, false, "", "");
Удали их, оставь в конце только одну.

format(query_string, sizeof(query_string), "%s WHERE `id` = '%d'", query_string, pInfo[playerid][pID]);
mysql_function_query(dbHandle, query_string, false, "", "");

Ошибка пропала, вот аккаунт не сохраняется... Использую команду:


CMD:test(playerid)
{
pInfo[playerid][pAdmin] = 6;
}
А админка не сохраняется..

Wise
07.07.2015, 19:41
А ты сам сток то вызываешь?

CMD:test(playerid)
{
pInfo[playerid][pAdmin] = 6;
SaveAccount(playerid);
return 1;
}

gangzone.ini
07.07.2015, 19:41
А ты сам сток то вызываешь?

CMD:test(playerid)
{
pInfo[playerid][pAdmin] = 6;
SaveAccount(playerid);
return 1;
}



public OnPlayerDisconnect(playerid, reason)
{
SaveAccount(playerid);
return true;
}

Wise
07.07.2015, 19:43
В mysql_log ни что не пишет?
Я не разбираюсь в движке ZCMD.
Может ты команду не так написал(а).

gangzone.ini
07.07.2015, 19:45
В mysql_log ни что не пишет?
Я не разбираюсь в движке ZCMD.
Может ты команду не так написал(а).
Использовала в команде сохранение аккаунта, админка сохранилась, ошибку выбило:

[WARNING] CMySQLHandle::Create - connection already exists

Wise
07.07.2015, 19:46
Как создаёшь базу данных?
UPD: Обнови plugin/include MySQL.

gangzone.ini
07.07.2015, 19:54
Как создаёшь базу данных?
UPD: Обнови plugin/include MySQL.

Загружаю базу данных name.sql
plugin/include MySQL R39-2.

Wise
07.07.2015, 19:56
Загружаю базу данных name.sql
plugin/include MySQL R39-2.

... В моде?

gangzone.ini
07.07.2015, 19:59
... В моде?

Может подключение к базе данных?

Wise
07.07.2015, 20:02
Может подключение к базе данных?

Извиняюсь. Поспешишь людей насмешишь.
Да, подключение.

gangzone.ini
07.07.2015, 20:03
Извиняюсь. Поспешишь людей насмешишь.
Да, подключение.
OnGameModeInit:

dbHandle = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_DB, MYSQL_PASSWORD);

$continue$
07.07.2015, 20:30
forward UpdateValueDate(id_player, name_table[], name_column[], value);
public UpdateValueDate(id_player, name_table[], name_column[], value)
{
new query_string[// подсчитай сама];
mysql_format(dbHandle, query_string, sizeof(query_string), "UPDATE `%e` SET `%e` = '%d' WHERE `name`= '%e'", name_table, name_column, value, pInfo[id_player][pName])
mysql_function_query(dbHandle, query_string, false, "", "");

Использование:


UpdateValueDate(playerid, "Account", " admin", 5);

P.S: Писалось с телефона, ужас как не удобно...

Dante_Codeo
07.07.2015, 20:38
Добавь

printf(query_string);

И смотри логи, может ячеек не хватает или тупо запрос не так идет :D

L0ndl3m
07.07.2015, 20:58
Добавь

printf(query_string);

И смотри логи, может ячеек не хватает или тупо запрос не так идет :D
Можно нескромный вопрос? Вы знали о существовании функции print?

Dante_Codeo
08.07.2015, 00:46
Можно нескромный вопрос? Вы знали о существовании функции print?

Но она же выводит не форматированный текст, а простой, на сколько мне известно. :mosking:

L0ndl3m
08.07.2015, 09:46
Но она же выводит не форматированный текст, а простой, на сколько мне известно. :mosking:
Можно конечно с помощью данной функции вывести текст, но это не целесообразно: при использовании данной функции машина будет проверять функцию на наличие остальных аргументов, нежели с print всё довольно проще: единственный строковый аргумент.

Dante_Codeo
08.07.2015, 14:52
Можно конечно с помощью данной функции вывести текст, но это не целесообразно: при использовании данной функции машина будет проверять функцию на наличие остальных аргументов, нежели с print всё довольно проще: единственный строковый аргумент.

Тут скорее как ее использовать. Я обычно ее использую так

printf("n\* * *\n %s \n* * *\n", ня);

$continue$
08.07.2015, 15:22
Тут скорее как ее использовать. Я обычно ее использую так

printf("n\* * *\n %s \n* * *\n", ня);

А ты попробую скомпилировать:
Варнинг на не соответствия аргументов:


printf(query_string);



print(query_string);

L0ndl3m
08.07.2015, 16:17
Ошибок и предупреждений во время компиляции не будет, но на производительность это может повлиять ( хотя куда уж там, не космический корабль ведь изобретаем, чтобы учитывать каждую наносекунду ).

$continue$
08.07.2015, 16:27
И вправду ошибся :)

gangzone.ini
08.07.2015, 17:15
Сохранение все хорошо, старую ошибку не удалили с логов. Закрыто.