Регистр имени (mysql)
#1

Проблема заключается в регистре имени игрока, а именно - у нас есть зарегистрированное имя Vasya, но если зайти под именем VasyA, то нам снова предложат пройти регистрацию, на файлах такой проблемы не было. Нужно чтобы при заходе на VasyA, нам писало что такое имя уже зарегистрировано.
Reply
#2

Код:
stock GetAccountID(playerid)
{
	new query[128], name[30];
	GetPlayerName(playerid,name,sizeof(name));
    format(query, sizeof(query),"SELECT `ID` FROM `players` WHERE `Name` = '%s'", name);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() == 1)
	{
        PlayerInfo[playerid][pID] = mysql_fetch_int();
        mysql_free_result();
        return PlayerInfo[playerid][pID];
  	}
	return 0;
}
Reply
#3

в запросе меняем WHERE на WHERE BINARY
пример:
PHP код:
WHERE `name`='%s' 
меняем на
PHP код:
WHERE BINARY `name`='%s' 
Reply
#4

Quote:
Originally Posted by Leonidjp
Посмотреть сообщение
Код:
stock GetAccountID(playerid)
{
	new query[128], name[30];
	GetPlayerName(playerid,name,sizeof(name));
    format(query, sizeof(query),"SELECT `ID` FROM `players` WHERE `Name` = '%s'", name);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows() == 1)
	{
        PlayerInfo[playerid][pID] = mysql_fetch_int();
        mysql_free_result();
        return PlayerInfo[playerid][pID];
  	}
	return 0;
}
PHP код:
stock GetAccountID(playerid)
{
    new 
query[128], name[30];
    
GetPlayerName(playerid,name,sizeof(name));
    
format(querysizeof(query),"SELECT `ID` FROM `players` WHERE BINARY `Name` = '%s'"name);
    
mysql_query(query);
    
mysql_store_result();
    if(
mysql_num_rows() == 1)
    {
        
PlayerInfo[playerid][pID] = mysql_fetch_int();
        
mysql_free_result();
        return 
PlayerInfo[playerid][pID];
      }
    return 
0;

Reply
#5

Quote:
Originally Posted by CamperGTA
Посмотреть сообщение
PHP код:
stock GetAccountID(playerid)
{
    new 
query[128], name[30];
    
GetPlayerName(playerid,name,sizeof(name));
    
format(querysizeof(query),"SELECT `ID` FROM `players` WHERE BINARY `Name` = '%s'"name);
    
mysql_query(query);
    
mysql_store_result();
    if(
mysql_num_rows() == 1)
    {
        
PlayerInfo[playerid][pID] = mysql_fetch_int();
        
mysql_free_result();
        return 
PlayerInfo[playerid][pID];
      }
    return 
0;

Без результатов, все равно выдает регистрацию.
Reply
#6

Если создавал БД через phpmyadmin, то для атрибута "name" установи кодировку utf-8 bin. Должно помочь.
Reply
#7

Как вариант можно сделать WHERE LOWER(Name) = LOWER('%s')
Reply
#8

Quote:
Originally Posted by NordMan
Посмотреть сообщение
Если создавал БД через phpmyadmin, то для атрибута "name" установи кодировку utf-8 bin. Должно помочь.
При создании таблиц нужно указать ячейке параметр BINARY, и кодировка тут не причем.

Quote:
Originally Posted by TRPG
Посмотреть сообщение
Как вариант можно сделать WHERE LOWER(Name) = LOWER('%s')
Не вздумайте больше ни когда и ни где такое предложить!
Reply
#9

Поднимаю, все еще актуально.
Делаю ячейке атрибут BINARY, но ничего не меняется.
Reply
#10

Quote:
Originally Posted by White_116
Посмотреть сообщение
Как вариант.
При регистрации тоже понижай символы.
Зарегай новый акк, ибо со старыми не выйдет ничего.
RTFM
Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Quote:
Originally Posted by TRPG
Посмотреть сообщение
Как вариант можно сделать WHERE LOWER(Name) = LOWER('%s')
Не вздумайте больше ни когда и ни где такое предложить!
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)