Регистр ( MySQL ) - Printable Version
+- SA-MP Forums Archive (
https://sampforum.blast.hk)
+-- Forum: Non-English (
https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (
https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (
https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Регистр ( MySQL ) (
/showthread.php?tid=423718)
Регистр ( MySQL ) -
CamperGTA - 19.03.2013
Здравствуйте.
Как можно сделать проверку на регистр букв в MySQL (для аккаунтов)
т.е. если зарегистрировался с ника Player, потом зайти с player, то надо будет заного зарегистрироваться, а не авторизоваться
Заранее спасибо.
Re: Регистр ( MySQL ) -
CamperGTA - 23.03.2013
up
upupup
Re: Регистр ( MySQL ) -
AirKite - 23.03.2013
Никак не нужно. Просто проверяйте, по умолчанию MySQL чувствителен к регистру.
Re: Регистр ( MySQL ) -
Stepashka - 23.03.2013
Quote:
Originally Posted by AirKite
Никак не нужно. Просто проверяйте, по умолчанию MySQL чувствителен к регистру.
|
Мускул по умолчанию
не чувствителен к регистру, для того что бы проверка стала чувствительна к регистру нужно использовать параметр
BINARY.
Re: Регистр ( MySQL ) -
AirKite - 23.03.2013
Quote:
Originally Posted by Stepashka
Мускул по умолчанию не чувствителен к регистру, для того что бы проверка стала чувствительна к регистру нужно использовать параметр BINARY.
|
По умолчанию чего? Всё зависит от кодировки, правил сравнения строк при создании таблицы и т.д. Сам лично зачастую (там где нужно) использую кодировки %name%_
ci (case insensitive).
Предположительно как тут обычно спрашивают про уже готовые моды, там также используют _ci кодировку и LOWER в MySQL запросе, который следует убрать. А вот BINARY или BLOB может не всегда подойти.
p.s. конечно наверное мне следовало сразу всё расписать максимально подробно.
Re: Регистр ( MySQL ) -
CamperGTA - 24.03.2013
как это реализовать?
код:
OnPlayerConnect:
Quote:
new str[128];
mysql_real_escape_string(PlayerName(playerid), PlayerName(playerid));
format(str, sizeof(str),"SELECT `name` FROM "accounts_table" WHERE `name` = '%s'", PlayerName(playerid));
mysql_function_query(connection, str, true, "OnPlayerRegCheck","d", playerid);
|
Quote:
forward OnPlayerRegCheck(playerid);
public OnPlayerRegCheck(playerid)
{
if(IsPlayerConnected(playerid))
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
//login dialog
}
else //register dialog
}
return 1;
}
|
Re: Регистр ( MySQL ) -
CamperGTA - 24.03.2013
как это реализовать?
код:
OnPlayerConnect:
Quote:
new str[128];
mysql_real_escape_string(PlayerName(playerid), PlayerName(playerid));
format(str, sizeof(str),"SELECT `name` FROM "accounts_table" WHERE `name` = '%s'", PlayerName(playerid));
mysql_function_query(connection, str, true, "OnPlayerRegCheck","d", playerid);
|
Quote:
forward OnPlayerRegCheck(playerid);
public OnPlayerRegCheck(playerid)
{
if(IsPlayerConnected(playerid))
{
new rows, fields;
cache_get_data(rows, fields);
if(rows)
{
//login dialog
}
else //register dialog
}
return 1;
}
|
Re: Регистр ( MySQL ) -
Jon_De - 24.03.2013
... WHERE BINARY `Name` ...
Re: Регистр ( MySQL ) -
Stepashka - 24.03.2013
Quote:
Originally Posted by AirKite
По умолчанию чего? Всё зависит от кодировки, правил сравнения строк при создании таблицы и т.д. Сам лично зачастую (там где нужно) использую кодировки %name%_ci (case insensitive).
|
кодировка тут не причем, MySQL без дополнительной глобальной настройки не обращает внимание на регистр, только для полей помеченных как BINARY и при указании данного ключа в проверках он начинает проверять регистр.
А то что вы указали в кодировке как case insensitive обозначает что в ней присутствуют буквы во верхнем и нижнем регистре, без приставки - только в нижнем. От этого приложения работающие с данной кодировкой регистрозависимыми не становятся.
Re: Регистр ( MySQL ) -
AirKite - 24.03.2013
Quote:
Originally Posted by Stepashka
кодировка тут не причем, MySQL без дополнительной глобальной настройки не обращает внимание на регистр, только для полей помеченных как BINARY и при указании данного ключа в проверках он начинает проверять регистр.
А то что вы указали в кодировке как case insensitive обозначает что в ней присутствуют буквы во верхнем и нижнем регистре, без приставки - только в нижнем. От этого приложения работающие с данной кодировкой регистрозависимыми не становятся.
|
Спасибо за дополнительную информацию. Я без сарказма. Действительно попытался объяснить грамотно, а получилось наоборот... Хотя конечно я и указывал о соответствующих правилах при создании таблиц.
Quote:
Originally Posted by AirKite
Всё зависит от кодировки, правил сравнения строк при создании таблицы и т.д. Сам лично зачастую (там где нужно) использую кодировки %name%_ci (case insensitive).
|