Аккаунты MySQL...
#1

Приветствую, у меня возникла проблема - не сохраняются аккаунты в БД, а точнее не обновляются строки БД...
(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;
}
Помогите! В чем может быть проблема?
Reply
#2

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

А можно запрос на изменение:
Код:
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
разделить на несколько запросов под одной переменной?
Reply
#4

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

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 в конце нужно
Reply
#6

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

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

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

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

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

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

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

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

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


Forum Jump:


Users browsing this thread: 1 Guest(s)