[Ajuda] Duvidas sobre mysql
#1

To fazendo um sistema de registro/login em mysql й queria saber algumas coisa:

1. Precisa mesmo usar "ID" na conta do player?

2. Na minha public OnPlayerConnect para verificar se existe a conta para jogar na public com mysql_tquery minha mysql format ta certa assim:

PHP код:
SELECT FROM `ContasWHERE `Nome` = '%e' 
3. Se e preciso usar "ID" na conta do player como comeзar novamente no banco de dados? Tipo eu jб registrei meu nick 3 vezes й apaguei as 3 contas mas o "ID" continua subindo nгo tem como voltar no 1 nгo?

Sу pelas perguntas eu to aprendendo mysql e seguindo algumas Aulas no YT й fazendo eu mesmo meu sistema com algumas "Olhadas" no sistema do Cleyson MySQL R41-4

@Edit

Tem gente que fala que mysql e mais dificil que sqlite '-' eu acho o contrario Qual e melhor?

SQLite eu n vejo uma maneira de inserir um id na conta do player, se tiver como й?
Reply
#2

1. Й melhor, q ai vc filtra pelo ID da conta... bom eu acho mais facil
2. Dessa forma q vc fez acho q ta certo... mas ficaria mais otimizado assim:
Код:
SELECT `Nome` FROM `Contas` WHERE `Nome` = '%e' ;

3. Sу vc resetar o Auto-Increment...
Код:
ALTER TABLE `Contas` AUTO_INCREMENT = 1;
Reply
#3

1. Gosto de usar um ID por ser mais fбcil na hora de manusear dados. Por exemplo uma troca de nick ingame.
Jб pensou como seria se o player trocar o nome e a referencia de linha fosse o nome ?! Ahuehauehue

2. Estб certo. Usar '%e' evita de precisar usar mysql_real_escape_string.

3. Bom nгo tenho essa informaзгo. Ma nгo faz diferenзa. Pois o ID e somente pra identificar a conta.



Sobre o ID SQLite desde que use PRIMARY KEY AUTOINCREMENT automaticamente a conta sendo criada gera um ID.
Vocк poder pegar da seguinte maneira:

PHP код:
new ID[MAX_PLAYERS];

RegistrarConta(playeridNome[], Senha[])
{
    new 
Query[60];
    
format(Querysizeof(Query), "INSERT INTO CONTAS(NOME, SENHA) VALUES ('%s', '%s')"NomeSenha);
    
db_query(DatabaseQuery);
    
    new 
DBResult:Result;
    
format(Querysizeof(Query), "SELECT ID FROM CONTAS WHERE NOME= '%s'"Nome);
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        
ID[playerid] = db_get_field_assoc_int(Result"ID");
        
printf("CONTA REGISTRADA: %s ID: %d"NomeID[playerid]);
    }
    
db_free_result(Result);

    return 
1;

Reply
#4

Obrigado Paulthaz e Cleyson.

Eu to mexendo com mysql mas nгo vou abrir servidor(es) grande(s) entгo falam que sqlite e mais rбpido que o mysql й sqlite e mais fбcil de mexer tem umas vantagens a mais que mysql, Porйm mysql й apenas para servidores maiores й tbm nгo й local e dнficil de mexer, Isso eu nгo acho!

@ Tbm to com problema que quando o player se registra nгo seta o level dele :/

FLW!
Reply
#5

Que eu saiba, plugins й mais rapido q as funзхes nativas... nunca fiz um teste sobre qual й mais rapido.

Sу que o MySQL tem a vantagem da multithread
Reply
#6

Quote:
Originally Posted by Paulthaz
Посмотреть сообщение
3. Sу vc resetar o Auto-Increment...
Код:
ALTER TABLE `Contas` AUTO_INCREMENT = 1;
Quando o valor do auto_increment й alterado para um valor menor ou igual a um jб inserido, o valor й definido para o ultimo inserido +1 caso use MyISAM. e com InnoDB o valor nem й alterado.

@TOPIC

Vocк pode usar qualquer coluna como identificador( PRIMARY KEY ) porйm tem que ser uma coluna que nгo possua valores repetidos, por isso na maioria das vezes й criado uma coluna apenas para ser o identificador.

Dependendo a quantidade de colunas que possui na tabela, usar o * pode causar certa lentidгo na resposta, vocк pode colocar o nome das colunas que deseja selecionar, assim nгo consultando dados que nгo vб utilizar.

Nгo precisa voltar, o AUTO_INCREMENT й justamente para incrementar automaticamente, ou seja, sempre um numero acima do ultimo inserido. Caso sejб necessбrio vocк pode usar
PHP код:
TRUNCATE TABLE nome_tabela
e forзar o valor do auto_increment a 0, mas isso pode gerar erros de relacionamento, entгo cuidado ao usar
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)