PDA

Просмотр полной версии : [Вопрос] Обновление информации MySQL



Un_Claude
28.06.2019, 19:50
Всех рад приветствовать. Аккаунт создаётся отлично с помощью следующего кода:


INSERT INTO `accounts`(`name`, `password`, `email`, `invited`, `sex`, `reg_ip`, `reg_date`, `last_ip`, `skin`, `level`, `exp`, `money`, `spawn`) VALUES ('%s', '%s', '%s', '%s', '%d', '%s', '%02d-%02d-%d', '%s', '0', '1', '0', '125', '1')

После выполнения данного кода, идет выбор скина, после выбора которого - надо обновить информацию со значением скина. Посылая запрос с помощью кода ниже не получаю никакого отклика (данные не изменяются). С чем это связано?


if(GetPVarInt(playerid,"select_skin") == 0) return Kick(playerid);
DeletePVar(playerid,"select_skin");
p_info[playerid][p_skin] = GetPlayerSkin(playerid);

static const
select_accounts[] = "UPDATE `accounts` SET `skin` = '%d' WHERE `id` = '%d' LIMIT 1";
new
string[sizeof(select_accounts) + (-2 + 3) + (-2 + 11)];
format(string, sizeof(string), select_accounts, p_info[playerid][p_skin], p_info[playerid][p_id]);
mysql_tquery(mysql_connect_ID, string);

p_info[playerid][p_level] = 1;
p_info[playerid][p_spawn] = 1;
for(new i; i != sizeof(selection_skin); i++) TextDrawHideForPlayer(playerid, selection_skin[i]);
CancelSelectTextDraw(playerid);
SetPlayerRegistered(playerid, PLAYER_REGISTERED_SUCCESSFULLY);
SpawnPlayer(playerid);

punkochel
29.06.2019, 06:29
Что касается кода, то тут все должно работать. Используй плагин logcore чтобы смотреть отладочную информацию. Если он у тебя уже есть, то в папке logs есть файл с логами работы mysql. А ещё как вариант проверить правильность запроса, это зайти phpMyAdmin и уже там отправить запрос.
Вероятнее всего, что у тебя название переменной не соответствует названию в столбца в базе данных.
Limit 1 тут не нужен, ты и так отправляешь запрос с конкретными условиями выборки. LIMIT будет рациональнее использовать когда ты делаешь к примеру сортировку от большего к меньшему, или наоборот, то есть когда тебе нужно получить к примеру 10 максимальных значений (игроки с наибольшим уровнем).
Ссылка на logcore: https://github.com/maddinat0r/samp-log-core/releases

Fallen A.
01.07.2019, 02:04
При использовании плагина MySQL можно включить MySQL_log, в частности, более-менее адекватному разработчику этого вполне достаточно.

punkochel
01.07.2019, 09:02
Полностью соглашусь. В целом лог вполне понятный.

Если вдруг не знал кто. Чтобы включить запись ошибок и предупреждений, в OnGameModeInit необходимо вызывать функцию:

mysql_log(ERROR | WARNING);