PDA

Просмотр полной версии : [Вопрос] Перемешаются ли данные в запросе?



X!X
08.08.2018, 16:36
new query[52+24-4];
format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%s' LIMIT 1", pInfo[playerid][pName]);
new Cache:result = mysql_query(Handle, query);
//тут получение данных
cache_delete(result);

Заходит Пупкин, а затем Залупкин и возможно ли что после того как первый получил свой пароль и получил значение в переменную и кэш был удален, а тем времен второй только начал его загружать и у него кэш тоже очистится получается и он никак не зайдет?

Таким образом выдает ошибку - new Cache:pCache[playerid] = mysql_query(Handle, query);

warning 219: local variable "pCache" shadows a variable at a preceding level
error 008: must be a constant expression; assumed zero
error 008: must be a constant expression; assumed zero
error 036: empty statement
fatal error 107: too many error messages on one line

Elrmrnt-Kritik
08.08.2018, 21:21
Pawn - однопоточный язык программирования. Поэтому никогда не будет обрабатываться код авторизации у Залупкина, пока не пройдет загрузка данных у Пупкина и удаление кэша (по крайней мере в Вашем случае, ибо если использовать загрузку аккаунтов в разных потоках, тогда и аккаунт Залупкина может прогрузиться раньше, хотя это очень маловероятно).

VVWVV
08.08.2018, 21:38
Вы уверены, что в кеш один и не создаётся при каждом запросе?

DeimoS
09.08.2018, 12:09
Мне очень интересно, как ты связал ошибку компилятора с работой запроса? :)

Касаемо вопроса про кэш: как уже заметили выше, Pawn однопоточен и пока код первого игрока не обработается, не обработается и код второго игрока (соответственно, ничего удалено лишнего не будет).

Ну а ошибка исчезнуть должна, если будешь делать всё как в примере: без всяких массивов.

X!X
09.08.2018, 18:47
Благодарю, переделаю:blush2:
Тему можно закрыть!