PDA

Просмотр полной версии : [Вопрос] Не получается получить данные из таблицы [MySQL R40]



Нуб
16.01.2017, 16:02
В базе данных значение скина стоит, а получить сервер при авторизации не может. В чем может быть связана проблема?



forward LoadAccount(playerid);
public LoadAccount(playerid)
{
cache_get_value_name(0, "Password", User[playerid][Pass]);
cache_get_value_name_int(0, "Sex", User[playerid][Sex]);
cache_get_value_name_int(0, "Age", User[playerid][Age]);
cache_get_value_name_int(0, "Sex", User[playerid][Skin]);
cache_get_value_name_int(0, "Skin", User[playerid][Skin]);
printf(" %i",User[playerid][Skin]);
SendClientMessage(playerid, 0xFFFFFF00, "Авторизация прошла успешно!");
SpawnPlayer(playerid);
return 1;
}

DeimoS
16.01.2017, 16:04
Наверное потому, что ты узнаёшь значение для Skin из столбца Sex?
Хоть немного свой код проверяй и пытайся сам исправлять, прежде чем на форумы бежать с вопросами. Совсем глупо же, ну

Нуб
16.01.2017, 16:10
Если бы было очень просто. Я бы не стал задавать такой глупый вопрос. Я в тупике.


forward LoadAccount(playerid);
public LoadAccount(playerid)
{
cache_get_value_name_int(0, "id", User[playerid][ID]);
cache_get_value_name(0, "Password", User[playerid][Pass]);
cache_get_value_name_int(0, "Sex", User[playerid][Sex]);
cache_get_value_name_int(0, "Age", User[playerid][Age]);
cache_get_value_name_int(0, "Skin", User[playerid][Skin]);
printf(" %i",User[playerid][Skin]);
SendClientMessage(playerid, 0xFFFFFF00, "Авторизация завершена!");
SpawnPlayer(playerid);
return 1;
}

Вот текущий код, который у меня на данный момент.

А вот ошибка:


[15:08:10] [plugins/mysql] cache_get_value_name_int: invalid row index '0' (number of rows: '0') (C:\Users\Андрей\Desktop\Новая папка\gamemodes\newmode.pwn:865)
[15:08:10] [plugins/mysql] cache_get_value_name: invalid row index '0' (number of rows: '0') (C:\Users\Андрей\Desktop\Новая папка\gamemodes\newmode.pwn:866)
[15:08:10] [plugins/mysql] cache_get_value_name_int: invalid row index '0' (number of rows: '0') (C:\Users\Андрей\Desktop\Новая папка\gamemodes\newmode.pwn:867)
[15:08:10] [plugins/mysql] cache_get_value_name_int: invalid row index '0' (number of rows: '0') (C:\Users\Андрей\Desktop\Новая папка\gamemodes\newmode.pwn:868)
[15:08:10] [plugins/mysql] cache_get_value_name_int: invalid row index '0' (number of rows: '0') (C:\Users\Андрей\Desktop\Новая папка\gamemodes\newmode.pwn:869)

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

DeimoS
16.01.2017, 16:12
Может потому что запрос либо не отправляется, либо кривой?

Нуб
16.01.2017, 16:15
stock RegisterPlayer(playerid)
{
new query_string[160];
format(query_string, sizeof(query_string), "INSERT INTO `accounts` (`Name`,`Password`,`Sex`,`Age`,`Skin`) VALUES ('%s','%s', '%i', '%i', '%i')", User[playerid][Name],Register[playerid][Pass],Register[playerid][Sex], Register[playerid][Age], Register[playerid][Skin]);
mysql_tquery(mysql_connect_ID, query_string, "LoadAccount", "i", playerid);
}

Вот запрос сам. Пишет "Авторизация же", текст появляется, не думаю что проблема здесь.

DeimoS
16.01.2017, 16:17
А теперь бегом изучать основы SQL.
Для того, чтоб извлечь данные из таблицы, нужно отправить запрос на извлечение.

Нуб
16.01.2017, 16:21
На вашем портале в минуале http://pro-pawn.ru/showthread.php?10548,
Аналогичная ситуация.

Wise
16.01.2017, 17:31
На вашем портале в минуале http://pro-pawn.ru/showthread.php?10548,
Аналогичная ситуация.

SELECT и INSERT в запросе сильно различаются своим функционалом.
Ты пишешь мод, не зная простых правил.
Реально, начни разбираться сам, без помощи. Подобных тем дохренища.

Нуб
16.01.2017, 18:34
Таких как у меня много тем?

Ну вот, проблема осталась.


stock RegisterPlayer(playerid)
{
new query_string[160];
format(query_string, sizeof(query_string), "INSERT INTO `accounts` (`Name`,`Password`,`Sex`,`Age`,`Skin`) VALUES ('%s','%s', '%i', '%i', '%i')", User[playerid][Name],Register[playerid][Pass],Register[playerid][Sex], Register[playerid][Age], Register[playerid][Skin]);
mysql_tquery(mysql_connect_ID, query_string, "OnRegister", "i", playerid);
}
public OnRegister(i)
{
SendClientMessage(i,-1," - 1 ");
new query_string[160];
format(query_string, sizeof(query_string), "SELECT * FROM `accounts` WHERE `Name` = '%s' AND `Password` = '%s'",User[i][Name],User[i][Pass]);
mysql_tquery(mysql_connect_ID, query_string, "LoadAccount", "d", i);
}
forward LoadAccount(playerid);
public LoadAccount(playerid)
{
cache_get_value_name_int(0, "id", User[playerid][ID]);
cache_get_value_name(0, "Password", User[playerid][Pass]);
cache_get_value_name_int(0, "Sex", User[playerid][Sex]);
cache_get_value_name_int(0, "Age", User[playerid][Age]);
cache_get_value_name_int(0, "Skin", User[playerid][Skin]);
printf(" %i ", User[playerid][Skin]);
SpawnPlayer(playerid);
return 1;
}

- - - Добавлено - - -

Закрывайте тему. Нашел проблему

DeimoS
16.01.2017, 18:36
Зачем ты вообще в запросе сверяешь пароль, если аккаунт только создан?
И зачем вообще загружаешь данные из БД, если ты их только туда записал? -_-
Что ты вообще делаешь, понимаешь сам-то хоть?