Просмотр полной версии : [Вопрос] Правильно ли сделал запрос к БД?
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, "Игрок не найден!");
}
- - - Добавлено - - -
У меня пишет, что не найден, значит все стабильно работает, я собственно это почему спросил... Что бы вы посоветовали еще что нибудь, фичи какие нибудь, я разрабатываю первый раз с нуля :(
Что это вообще за условие?
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
Проверяет есть ли игрок в бд или нет
Так оно неправильное. Количество строк возвращается в переменную, которая указывается в 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, !"Далее", "");
}
Проверил, так тоже постоянно показывает, что аккаунт свободен :(
Разобрался. Можно закрывать, спасибо всем!
Я в своём сообщении дал же правильный код :)
Закрыто.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot