PDA

Просмотр полной версии : [Вопрос] Правильно ли сделал запрос к БД?



Mike World
08.03.2018, 15:27
static const fmt_query[] = "\
SELECT * FROM "T_USERS" WHERE `name` = '%s' LIMIT 1 \
";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
format(query, sizeof(query), fmt_query, GetName(playerid));
mysql_query(dbHandle, query, true); // отправили запрос к БД
new row;
if(cache_get_row_count(row))
{
SendClientMessage(playerid, -1, "Игрок не найден!");
}

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

У меня пишет, что не найден, значит все стабильно работает, я собственно это почему спросил... Что бы вы посоветовали еще что нибудь, фичи какие нибудь, я разрабатываю первый раз с нуля :(

DeimoS
08.03.2018, 16:34
Что это вообще за условие?


static const fmt_query[] = "\
SELECT * FROM "T_USERS" WHERE `name` = '%s' LIMIT 1 \
";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
format(query, sizeof(query), fmt_query, GetName(playerid));
mysql_query(dbHandle, query, true); // отправили запрос к БД
new row;
cache_get_row_count(row)
if(row == 0)
{
SendClientMessage(playerid, -1, "Игрок не найден!");
}
else
{
SendClientMessage(playerid, -1, "Игрок найден!");
}

Я бы посоветовал изучить сначала основы, а не спрашивать о каких-то "фичах". Занимайся реализацией своих идей, а не преждевременной оптимизацией кода. Всё равно не сможешь написать что-то хорошее сразу. Оптимизацией займёшься когда уже опыта наберёшься.

Mike World
08.03.2018, 18:05
Проверяет есть ли игрок в бд или нет

DeimoS
08.03.2018, 18:54
Так оно неправильное. Количество строк возвращается в переменную, которая указывается в cache_get_row_count.

Mike World
08.03.2018, 19:00
т.е надо так?

cache_get_row_count(row, field)
{

}

Вот так верно будет? Если нет, пожалуйста подправьте


new row, field;
if(cache_get_row_count(row, field))
{
static const fmt_str[] = "\
{FCFCFD}Добро пожаловать на сервер "SERVER_NAME"!\n\n\
Ваш логин: %s {88aa62}[свободен] \n\
{FCFCFD}Придумайте и запишите пароль в окошко:\
";
new str[sizeof(fmt_str)+(-2+MAX_PLAYER_NAME)];
format(str, sizeof(str), fmt_str, GetName(playerid));
SPD(playerid, dRegister, DIALOG_STYLE_INPUT, !"Регистрация | Ввод пароля [1|3]", str, !"Далее", "");
}
else
{
static const fmt_str[] = "\
Добро пожаловать на сервер "SERVER_NAME"!\n\n\
Ваш логин: %s [занят] \n\
Придумайте и запишите пароль в окошко:\
";
new str[sizeof(fmt_str)+(-2+MAX_PLAYER_NAME)];
format(str, sizeof(str), fmt_str, GetName(playerid));
SPD(playerid, dRegister, DIALOG_STYLE_INPUT, !"Авторизация | Ввод пароля", str, !"Далее", "");
}


Проверил, так тоже постоянно показывает, что аккаунт свободен :(

Разобрался. Можно закрывать, спасибо всем!

DeimoS
08.03.2018, 20:28
Я в своём сообщении дал же правильный код :)
Закрыто.