[14:59:38] [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 ' `Score` = '0', `AdminLvl` = '3'' at line 1
[14:59:38] [ERROR] "mysql_close" - invalid connection handle (ID = 1)
[14:59:50] [WARNING] CMySQLHandle::Create - connection already exists
[14:59:50] [WARNING] CMySQLHandle::Create - connection already exists
[14:59:50] [ERROR] "cache_get_row_count" - invalid connection handle (ID = 1)
[14:59:50] [ERROR] "cache_get_row_count" - invalid connection handle (ID = 1)
[15:00:29] [ERROR] "mysql_escape_string" - invalid connection handle (ID = 1)
[15:00:29] [ERROR] "mysql_escape_string" - invalid connection handle (ID = 1)
[15:00:29] [ERROR] "cache_get_row_count" - invalid connection handle (ID = 1)
[15:01:18] [ERROR] "mysql_escape_string" - invalid connection handle (ID = 1)
[15:01:18] [ERROR] "mysql_escape_string" - invalid connection handle (ID = 1)
Вот такие вот ошибочки выдаёт mysql_log.
Всё, что связано с аккаунтом в гейммоде:
stock CreateAccount(playerid, password[]) {
new
query[128], // Для запроса.
sqlname[MAX_PLAYER_NAME],
sqlpassword[32];
mysql_real_escape_string(pInfo[playerid][aName], sqlname); // Защитит от sql inject
mysql_real_escape_string(password, sqlpassword); // Защитит от sql inject
format(query, sizeof(query), "INSERT INTO `Accounts` (`Name`, `Password`) VALUE ('%s', '%s')", sqlname, sqlpassword); // Добавляем в таблицу запись.
// INSERT - добавление записи в таблицу, 1. () - поля. 2. VALUE - значения этих полей.
mysql_query(connectionHandl, query); // Отправляем запрос.
GetAccountID(playerid); // Узнаём ИД аккаунта, будет использоваться для сохранения и прочих операций.
strmid(pInfo[playerid][aPassword], password, 0, 64, 255); // Внедряем в массив аккаунта введенный игроком пароль.
pInfo[playerid][aLogged] = true; // Мы авторизованы.
return 1;
}
stock LoadAccount(playerid, password[]) {
new
query[128],
sqlpass[32],
result[5+24+64],
dialog[128];
mysql_real_escape_string(password, sqlpass); // Защита от SQL Inject, шифрует кодировку.
format(query, sizeof(query), "SELECT * FROM `Accounts` WHERE `Password` = '%s' AND `ID` = '%i'", sqlpass, pInfo[playerid][aID]);
// SELECT * - выбрать, FROM - с таблицы, WHERE - где, пароль равен введенному паролю и ID равен иду ника человека.
mysql_query(connectionHandl, query); // Отправляем запрос.
mysql_store_result(); // Смотрим записи, которые мы выбрали запросом выше.
if(mysql_num_rows() == 1) { // Если выбрало только 1 аккаунт с таким паролем и ИД - успех, пароль введен верно, загружаем данные в массив.
mysql_fetch_row_format(result, "|"); // split, данные в результате записываются типо "1|Snoowker|parol"
sscanf(result, "p<|>is[24]s[32]", // i - ид (int), s[размер] - string, ник и пароль.
pInfo[playerid][aID],
pInfo[playerid][aName],
pInfo[playerid][aPassword]);
pInfo[playerid][aLogged] = true;
mysql_free_result(); // Очищаем память.
return 1;
}
else { // Мы ввели неверный пароль.
if(pInfo[playerid][aWrongPassword] == 4) {
SendClientMessage(playerid, COLOR_LIGHTRED, "Вы 3 раза ввели неверный пароль и были отключены от сервера.");
Kick(playerid);
return 1;
}
format(dialog, sizeof(dialog),
"Вы ввели неверный пароль.\n\
У Вас осталось %i/3 попыток ввода.", 3 - pInfo[playerid][aWrongPassword]);
ShowPlayerDialog(playerid, DIALOG_WRONGPAS, DIALOG_STYLE_MSGBOX, "Ошибка.", dialog, "Повтор", "Отмена");
}
return 1;
}
stock GetAccountID(playerid) {
new
query[128];
format(query, sizeof(query),"SELECT `ID` FROM `Accounts` WHERE `Name` = '%s'", pInfo[playerid][aName]);
// Выбираем ID, с таблицы Accounts, где Ник равен нику игрока.
mysql_query(connectionHandl,query); // Отправляем запрос.
mysql_store_result(); // Видим
if(mysql_num_rows() == 1) { // Если у нас в результате выбрало 1 запись, т.е. аккаунт игрока.
pInfo[playerid][aID] = cache_get_row_int(0, 0); // ИД игрока равен номеру записи.
mysql_free_result(); // Очищаем память.
return pInfo[playerid][aID]; // Возвращаем ИД игрока.
}
return 0;
}
stock SaveAccount(playerid) { // Сохранение аккаунта.
if(pInfo[playerid][aLogged] == true) { // Проверка, если аккаунт авторизован.
new
query[186],
sqlname[MAX_PLAYER_NAME],
sqlpass[64];
mysql_real_escape_string(pInfo[playerid][aName], sqlname);
mysql_real_escape_string(pInfo[playerid][aPassword], sqlpass);
format(query, sizeof(query), "UPDATE `Accounts` SET `Name` = '%s', `Password` = '%s' WHERE `ID` = '%i', `Score` = '%d', `AdminLvl` = '%d'", sqlname, sqlpass, pInfo[playerid][aID], GetPlayerScore(playerid), pInfo[playerid][pAdmin]);
mysql_query(connectionHandl, query); // Отправляем запрос
}
return 1;
}
ПОМОГИТЕ ПЛИЗ!!!