Duvidas sobre mysql -
SIZET - 01.08.2018
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 `Contas` WHERE `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 й?
Re: Duvidas sobre mysql -
Paulthaz - 01.08.2018
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;
Re: Duvidas sobre mysql -
Cleyson - 01.08.2018
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(playerid, Nome[], Senha[])
{
new Query[60];
format(Query, sizeof(Query), "INSERT INTO CONTAS(NOME, SENHA) VALUES ('%s', '%s')", Nome, Senha);
db_query(Database, Query);
new DBResult:Result;
format(Query, sizeof(Query), "SELECT ID FROM CONTAS WHERE NOME= '%s'", Nome);
Result = db_query(Database, Query);
if(db_num_rows(Result))
{
ID[playerid] = db_get_field_assoc_int(Result, "ID");
printf("CONTA REGISTRADA: %s ID: %d", Nome, ID[playerid]);
}
db_free_result(Result);
return 1;
}
Re: Duvidas sobre mysql -
SIZET - 01.08.2018
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!
Re: Duvidas sobre mysql -
Paulthaz - 01.08.2018
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
Re: Duvidas sobre mysql -
DiegoR - 01.08.2018
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