SA-MP Forums Archive
Аккаунты MySQL... - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Аккаунты MySQL... (/showthread.php?tid=522018)



Аккаунты MySQL... - Dreamerzzz - 25.06.2014

Приветствую, у меня возникла проблема - не сохраняются аккаунты в БД, а точнее не обновляются строки БД...
(SaveAccount(playerid) - вызывается в паблике OnPlayerDisconnect...)

собственно, сама функция:
Код:
forward SaveAccount(playerid);
public SaveAccount(playerid)
{
    new query[1400];
    new exp = PlayerInfo[playerid][pPoints1];
    new kills = PlayerInfo[playerid][pKills1];
    new head = PlayerInfo[playerid][pHeadshots];
    new dead = PlayerInfo[playerid][pDeaths1];
    new rank = PlayerInfo[playerid][pRank1];
    new money = PlayerInfo[playerid][pMoney];
    new dp = PlayerInfo[playerid][pDonatPoints1];
    new ammo = PlayerInfo[playerid][pMaxAmmo];
    new gren = PlayerInfo[playerid][pGrenade];
    new warn = PlayerInfo[playerid][pWarns];
    new spec = PlayerInfo[playerid][pPerks];
    new adm = PlayerInfo[playerid][pAdminka1];
    
    format(query, sizeof query, "UPDATE `users` WHERE `id`='%d' SET `Exp`='%d',`Kills`='%d',`Headshots`='%d',`Deaths`='%d',`Rank`='%d',`Money`='%d',`Dp`= '%d',`Ammo`='%d',`Gren`='%d',`Warns`='%d',`Spec`='%d',`Adm`='%d' LIMIT 1",PlayerInfo[playerid][accID],exp,kills,head,dead,rank,money,dp,ammo,gren,warn,spec,adm);
    mysql_function_query (dbHandle, query, false, "", "" ) ;//тут мы делаем запрос,который ввели в query
    return 1;
}
Помогите! В чем может быть проблема?


Re: Аккаунты MySQL... - Stepashka - 25.06.2014

UPDATE ... SET ... WHERE
При обновлении по идишнику указывать лимит не нужно.


Re: Аккаунты MySQL... - Dreamerzzz - 26.06.2014

А можно запрос на изменение:
Код:
format(query, sizeof query, "UPDATE `users` WHERE `id`='%d' SET `Exp`='%d',`Kills`='%d',`Headshots`='%d',`Deaths`='%d',`Rank`='%d',`Money`='%d',`Dp`= '%d',`Ammo`='%d',`Gren`='%d',`Warns`='%d',`Spec`='%d',`Adm`='%d' LIMIT 1",PlayerInfo[playerid][accID],exp,kills,head,dead,rank,money,dp,ammo,gren,warn,spec,adm);
    mysql_function_query (dbHandle, query, false, "", "" ) ;//тут мы делаем запрос,который ввели в query
разделить на несколько запросов под одной переменной?


Re: Аккаунты MySQL... - Stepashka - 26.06.2014

Скорее всего нет, надо смотреть реализацию плагина.


Re: Аккаунты MySQL... - Jon_De - 26.06.2014

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
А можно запрос на изменение:
Код:
format(query, sizeof query, "UPDATE `users` WHERE `id`='%d' SET `Exp`='%d',`Kills`='%d',`Headshots`='%d',`Deaths`='%d',`Rank`='%d',`Money`='%d',`Dp`= '%d',`Ammo`='%d',`Gren`='%d',`Warns`='%d',`Spec`='%d',`Adm`='%d' LIMIT 1",PlayerInfo[playerid][accID],exp,kills,head,dead,rank,money,dp,ammo,gren,warn,spec,adm);
    mysql_function_query (dbHandle, query, false, "", "" ) ;//тут мы делаем запрос,который ввели в query
разделить на несколько запросов под одной переменной?
Зачем? У тебя просто запрос составлен не правильно, where в конце нужно


Re: Аккаунты MySQL... - Dreamerzzz - 26.06.2014

Quote:
Originally Posted by Jon_De
Посмотреть сообщение
Зачем? У тебя просто запрос составлен не правильно, where в конце нужно
Я это уже поправил, при отключении игрока аккаунты все равно не обновляются, скорее всего т.к слишком медленно идет процесс, вот я и думаю, разделить на несколько параллельных запросов...

Я тестировал только с переменной `money` - все работает, как надо, а когда их большое количество, как в начальном. аккаунты не обновляются


Re: Аккаунты MySQL... - Jon_De - 26.06.2014

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
Я это уже поправил, при отключении игрока аккаунты все равно не обновляются, скорее всего т.к слишком медленно идет процесс, вот я и думаю, разделить на несколько параллельных запросов...

Я тестировал только с переменной `money` - все работает, как надо, а когда их большое количество, как в начальном. аккаунты не обновляются
Значит поля какого то нет или ошибка в написании


Re: Аккаунты MySQL... - Stepashka - 26.06.2014

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
Я это уже поправил, при отключении игрока аккаунты все равно не обновляются, скорее всего т.к слишком медленно идет процесс, вот я и думаю, разделить на несколько параллельных запросов...

Я тестировал только с переменной `money` - все работает, как надо, а когда их большое количество, как в начальном. аккаунты не обновляются
Бред, в MySQL разница в скорости обновления одного столбца или нескольких, в определенной строке, настолько мала что ей можно пренебречь. Скорее всего проблема в другом, например в форматировании большой строки.


Re: Аккаунты MySQL... - Dreamerzzz - 27.06.2014

Я где-то слыхал, что в строке format(...) может быть не более 150 символов...У меня там за 200 переваливает


Re: Аккаунты MySQL... - Stepashka - 27.06.2014

Quote:
Originally Posted by Dreamerzzz
Посмотреть сообщение
Я где-то слыхал, что в строке format(...) может быть не более 150 символов...У меня там за 200 переваливает
тебя обманули.


Re: Аккаунты MySQL... - Alexander_Petrov - 27.06.2014

Если сохранение при рестарте сервера, нужно использовать однопоточную функцию.