[Ajuda] Alguem me ajuda mysql?
#1

Ola meus caros salvadores do prуximo apocalipse, venho lhes encher o saco para entender um pouco a mysql!

PHP Code:
stock SalvarDados(playerid) {
    new 
query[800];
    
mysql_format(Conexaoquerysizeof(query), "UPDATE `Contas` SET Nome='%s', Senha='%s', Skin='%d', Dinheiro='%d', Level='%d', Vida='%f', Colete='%f', Procurado='%d', Administrador='%d', Moderador='%d', Corregedor='%d', Comandante='%d', Patente='%d', Ajudante='%d', TemJetpack='%d', Profissao='%d' WHERE '%f'",
    
Pname(playerid),
    
pInfo[playerid][Senha],
    
GetPlayerSkin(playerid),
    
GetPlayerMoney(playerid),
    
GetPlayerScore(playerid),
    
GetPlayerHealth(playerid),
    
GetPlayerArmour(playerid),
    
GetPlayerWantedLevel(playerid),
    
pInfo[playerid][Administrador],
    
pInfo[playerid][Moderador],
    
pInfo[playerid][Corregedor],
    
pInfo[playerid][Comandante],
    
pInfo[playerid][Patente],
    
pInfo[playerid][Ajudante],
    
pInfo[playerid][TemJetpack],
    
pInfo[playerid][Profissao]);
    
mysql_query(Conexaoquerytrue);
    return 
1;

PHP Code:
C:\Users\victo\OneDrive\Бrea de Trabalho\server\gamemodes\Server.pwn(2191 -- 2197) : warning202number of arguments does not match definition
C
:\Users\victo\OneDrive\Бrea de Trabalho\server\gamemodes\Server.pwn(2191 -- 2198) : warning202number of arguments does not match definition 
Reply
#2

Estб faltando o complemento do where.
Reply
#3

Como o Luan disse estб faltando a coluna delimitadora do WHERE, exemplo:
PHP Code:
SELECT FROM usuario WHERE usuario.id = %
Outra coisa, o nъmero de argumentos passados pra funзгo mysql_format nгo bate com o especificado na string que serб formatada.

PHP Code:
//17 argumentos
"UPDATE `Contas` SET Nome='%s', Senha='%s', Skin='%d', Dinheiro='%d', Level='%d', Vida='%f', Colete='%f', Procurado='%d', Administrador='%d', Moderador='%d', Corregedor='%d', Comandante='%d', Patente='%d', Ajudante='%d', TemJetpack='%d', Profissao='%d' WHERE '%f'" 
PHP Code:
    //16 argumentos
    
Pname(playerid), 
    
pInfo[playerid][Senha], 
    
GetPlayerSkin(playerid), 
    
GetPlayerMoney(playerid), 
    
GetPlayerScore(playerid), 
    
GetPlayerHealth(playerid), 
    
GetPlayerArmour(playerid), 
    
GetPlayerWantedLevel(playerid), 
    
pInfo[playerid][Administrador], 
    
pInfo[playerid][Moderador], 
    
pInfo[playerid][Corregedor], 
    
pInfo[playerid][Comandante], 
    
pInfo[playerid][Patente], 
    
pInfo[playerid][Ajudante], 
    
pInfo[playerid][TemJetpack], 
    
pInfo[playerid][Profissao
Reply
#4

Nгo entendi isso
PHP Code:
SELECT FROM usuario WHERE usuario.id = %
eu coloquei assim!

PHP Code:
stock SalvarDados(playerid) {
    new 
query[800];
    
mysql_format(Conexaoquerysizeof(query), "UPDATE `Contas` SET Nome='%s', Senha='%s', Skin='%d', Dinheiro='%d', Level='%d', Vida='%f', Colete='%f', Procurado='%d', Administrador='%d', Moderador='%d', Corregedor='%d', Comandante='%d', Patente='%d', Ajudante='%d', TemJetpack='%d', Profissao='%d' WHERE='%s'",
    
Pname(playerid),
    
pInfo[playerid][Senha],
    
GetPlayerSkin(playerid),
    
GetPlayerMoney(playerid),
    
GetPlayerScore(playerid),
    
GetPlayerHealth(playerid),
    
GetPlayerArmour(playerid),
    
GetPlayerWantedLevel(playerid),
    
pInfo[playerid][Administrador],
    
pInfo[playerid][Moderador],
    
pInfo[playerid][Corregedor],
    
pInfo[playerid][Comandante],
    
pInfo[playerid][Patente],
    
pInfo[playerid][Ajudante],
    
pInfo[playerid][TemJetpack],
    
pInfo[playerid][Profissao],
    
Pname(playerid));
    
mysql_query(Conexaoquerytrue);
    return 
1;

mas continuou o erro!
Reply
#5

Vocк estб fazendo errado.
Somente strings (%s) precisam de aspas, o resto nгo.
WHERE й um argumento que precisa de complemento: WHERE nomedojogador = '%s'
pawn Code:
mysql_format(Conexao, query, sizeof(query), "UPDATE Contas SET Nome='%s', Senha='%s', Skin=%d, Dinheiro=%d,
Level=%d, Vida=%f, Colete=%f, Procurado=%d, Administrador=%d, Moderador=%d, Corregedor=%d, Comandante=%d,
Patente=%d, Ajudante=%d, TemJetpack=%d, Profissao=%d WHERE /*nome da coluna que guarda o nome do jogador*/='%s'"
,
Pname(playerid),
pInfo[playerid][Senha],
GetPlayerSkin(playerid),
GetPlayerMoney(playerid),
GetPlayerScore(playerid),
GetPlayerArmour(playerid),
GetPlayerWantedLevel(playerid),
pInfo[playerid][Administrador],
pInfo[playerid][Moderador],
pInfo[playerid][Corregedor],
pInfo[playerid][Comandante],
pInfo[playerid][Patente],
pInfo[playerid][Ajudante],
pInfo[playerid][TemJetpack],
pInfo[playerid][Profissao],
Pname(playerid));
Reply
#6

Quote:
Originally Posted by vitinhosamp
View Post
Nгo entendi isso
PHP Code:
SELECT FROM usuario WHERE usuario.id = %
eu coloquei assim!

PHP Code:
stock SalvarDados(playerid) {
    new 
query[800];
    
mysql_format(Conexaoquerysizeof(query), "UPDATE `Contas` SET Nome='%s', Senha='%s', Skin='%d', Dinheiro='%d', Level='%d', Vida='%f', Colete='%f', Procurado='%d', Administrador='%d', Moderador='%d', Corregedor='%d', Comandante='%d', Patente='%d', Ajudante='%d', TemJetpack='%d', Profissao='%d' WHERE='%s'",
    
Pname(playerid),
    
pInfo[playerid][Senha],
    
GetPlayerSkin(playerid),
    
GetPlayerMoney(playerid),
    
GetPlayerScore(playerid),
    
GetPlayerHealth(playerid),
    
GetPlayerArmour(playerid),
    
GetPlayerWantedLevel(playerid),
    
pInfo[playerid][Administrador],
    
pInfo[playerid][Moderador],
    
pInfo[playerid][Corregedor],
    
pInfo[playerid][Comandante],
    
pInfo[playerid][Patente],
    
pInfo[playerid][Ajudante],
    
pInfo[playerid][TemJetpack],
    
pInfo[playerid][Profissao],
    
Pname(playerid));
    
mysql_query(Conexaoquerytrue);
    return 
1;

mas continuou o erro!
Pode comentar onde fica as linhas do erro? Aliбs a sua query estб errada, no WHERE deve especificar o nome da coluna "Nome" no caso WHERE `Nome` = '%s'
Reply
#7

Quote:
Originally Posted by Ermanhaut
View Post
Vocк estб fazendo errado.
Somente strings (%s) precisam de aspas, o resto nгo.
WHERE й um argumento que precisa de complemento: WHERE nomedojogador = '%s'
pawn Code:
mysql_format(Conexao, query, sizeof(query), "UPDATE Contas SET Nome='%s', Senha='%s', Skin=%d, Dinheiro=%d,
Level=%d, Vida=%f, Colete=%f, Procurado=%d, Administrador=%d, Moderador=%d, Corregedor=%d, Comandante=%d,
Patente=%d, Ajudante=%d, TemJetpack=%d, Profissao=%d WHERE /*nome da coluna que guarda o nome do jogador*/='%s'"
,
Pname(playerid),
pInfo[playerid][Senha],
GetPlayerSkin(playerid),
GetPlayerMoney(playerid),
GetPlayerScore(playerid),
GetPlayerArmour(playerid),
GetPlayerWantedLevel(playerid),
pInfo[playerid][Administrador],
pInfo[playerid][Moderador],
pInfo[playerid][Corregedor],
pInfo[playerid][Comandante],
pInfo[playerid][Patente],
pInfo[playerid][Ajudante],
pInfo[playerid][TemJetpack],
pInfo[playerid][Profissao],
Pname(playerid));
OBS:
Ele nгo estб fazendo errado quando vocк se refere as aspas nos inteiros. O SGBD automaticamente retira elas quando o tipo do campo й inteiro e o que tem dentro das aspas й um inteiro, se vocк passar um caractere nas aspas de um campo do tipo inteiro ai sim ele vai acusar um erro.

@topic
Tenta essa linha no lugar dessa que vocк ta usando:

pawn Code:
mysql_format(Conexao, query, sizeof(query), "UPDATE contas SET nome='%s', senha='%s', skin=%d, dinheiro=%d,
level=%d, vida=%f, colete=%f, procurado=%d, administrador=%d, moderador=%d, corregedor=%d, comandante=%d,
patente=%d, ajudante=%d, temjetpack=%d, profissao=%d WHERE nome='%s'"
,
Pname(playerid),
pInfo[playerid][Senha],
GetPlayerSkin(playerid),
GetPlayerMoney(playerid),
GetPlayerScore(playerid),
GetPlayerArmour(playerid),
GetPlayerWantedLevel(playerid),
pInfo[playerid][Administrador],
pInfo[playerid][Moderador],
pInfo[playerid][Corregedor],
pInfo[playerid][Comandante],
pInfo[playerid][Patente],
pInfo[playerid][Ajudante],
pInfo[playerid][TemJetpack],
pInfo[playerid][Profissao],
Pname(playerid));
Uma dica, nгo sei se a tua tabela do MySQL ta usando como chave primaria o nome do jogador, se estiver, cria uma coluna com auto increment do tipo inteiro e seta ela como chave primaria porque se algum dia o nick do jogador mudar e vocк nгo setar, ferrou. Com um campo do tipo inteiro como chave primaria vocк ganha mais desempenho nos SELECTS por ID e tambйm em certas operaзхes como DELETE e UPDATE.
Reply
#8

Galera ja tentei de tudo, e por incrнvel que pareзa nгo funcionou ainda, alguns programadores me falaram que era por falta de linha, mas me parece que nгo!

Meu Jeito:


PHP Code:
stock SalvarDados(playerid) {
    new 
query[800];
    
mysql_format(Conexaoquerysizeof(query), "UPDATE Contas SET Nome='%s', Senha='%s', Skin=%d, Dinheiro=%d, Level=%d, Vida=%f, Colete=%f, Procurado=%d, Administrador=%d, Moderador=%d, Corregedor=%d, Comandante=%d,Patente=%d, Ajudante=%d, TemJetpack=%d, Profissao=%d WHERE `Nomes`='%s'",
    
Pname(playerid),
    
pInfo[playerid][Senha],
    
GetPlayerSkin(playerid),
    
GetPlayerMoney(playerid),
    
GetPlayerScore(playerid),
    
GetPlayerArmour(playerid),
    
GetPlayerWantedLevel(playerid),
    
pInfo[playerid][Administrador],
    
pInfo[playerid][Moderador],
    
pInfo[playerid][Corregedor],
    
pInfo[playerid][Comandante],
    
pInfo[playerid][Patente],
    
pInfo[playerid][Ajudante],
    
pInfo[playerid][TemJetpack],
    
pInfo[playerid][Profissao],
    
Pname(playerid));
    
mysql_query(Conexaoquerytrue);
    return 
1;

Reply
#9

Tenta assim:

pawn Code:
stock SalvarDados(playerid) {
    new query[800], nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nome, sizeof(nome));
    mysql_format(Conexao, query, sizeof(query), "UPDATE Contas SET Nome='%s', Senha='%s', Skin=%d, Dinheiro=%d, Level=%d, Vida=%f, Colete=%f, Procurado=%d, Administrador=%d, Moderador=%d, Corregedor=%d, Comandante=%d,Patente=%d, Ajudante=%d, TemJetpack=%d, Profissao=%d WHERE `Nomes`='%s'",
    nome,
    pInfo[playerid][Senha],
    GetPlayerSkin(playerid),
    GetPlayerMoney(playerid),
    GetPlayerScore(playerid),
    GetPlayerArmour(playerid),
    GetPlayerWantedLevel(playerid),
    pInfo[playerid][Administrador],
    pInfo[playerid][Moderador],
    pInfo[playerid][Corregedor],
    pInfo[playerid][Comandante],
    pInfo[playerid][Patente],
    pInfo[playerid][Ajudante],
    pInfo[playerid][TemJetpack],
    pInfo[playerid][Profissao],
    nome);
    mysql_query(Conexao, query, true);
    return 1;
}
Reply
#10

Do mesmo jeito: Linha do aviso:
PHP Code:
C:\Users\victo\OneDrive\Бrea de Trabalho\server\gamemodes\Server.pwn(2192 -- 2198) : warning202number of arguments does not match definition 
Reply
#11

Quote:
Originally Posted by vitinhosamp
View Post
Galera ja tentei de tudo, e por incrнvel que pareзa nгo funcionou ainda, alguns programadores me falaram que era por falta de linha, mas me parece que nгo!

Meu Jeito:


PHP Code:
stock SalvarDados(playerid) {
    new 
query[800];
    
mysql_format(Conexaoquerysizeof(query), "UPDATE Contas SET Nome='%s', Senha='%s', Skin=%d, Dinheiro=%d, Level=%d, Vida=%f, Colete=%f, Procurado=%d, Administrador=%d, Moderador=%d, Corregedor=%d, Comandante=%d,Patente=%d, Ajudante=%d, TemJetpack=%d, Profissao=%d WHERE `Nomes`='%s'",
    
Pname(playerid),
    
pInfo[playerid][Senha],
    
GetPlayerSkin(playerid),
    
GetPlayerMoney(playerid),
    
GetPlayerScore(playerid),
    
GetPlayerArmour(playerid),
    
GetPlayerWantedLevel(playerid),
    
pInfo[playerid][Administrador],
    
pInfo[playerid][Moderador],
    
pInfo[playerid][Corregedor],
    
pInfo[playerid][Comandante],
    
pInfo[playerid][Patente],
    
pInfo[playerid][Ajudante],
    
pInfo[playerid][TemJetpack],
    
pInfo[playerid][Profissao],
    
Pname(playerid));
    
mysql_query(Conexaoquerytrue);
    return 
1;

PHP Code:
stock SalvarDados(playerid) {
    new 
query[800];
    new 
Float:health;
    
GetPlayerHealth(playerid,health);
    
mysql_format(Conexaoquerysizeof(query), "UPDATE Contas SET Nome='%s', Senha='%s', Skin=%d, Dinheiro=%d, Level=%d, Vida=%f, Colete=%f, Procurado=%d, Administrador=%d, Moderador=%d, Corregedor=%d, Comandante=%d,Patente=%d, Ajudante=%d, TemJetpack=%d, Profissao=%d WHERE `Nomes`='%s'",
    
Pname(playerid),
    
pInfo[playerid][Senha],
    
GetPlayerSkin(playerid),
    
GetPlayerMoney(playerid),
    
GetPlayerScore(playerid),
    
health,
    
GetPlayerArmour(playerid),
    
GetPlayerWantedLevel(playerid),
    
pInfo[playerid][Administrador],
    
pInfo[playerid][Moderador],
    
pInfo[playerid][Corregedor],
    
pInfo[playerid][Comandante],
    
pInfo[playerid][Patente],
    
pInfo[playerid][Ajudante],
    
pInfo[playerid][TemJetpack],
    
pInfo[playerid][Profissao],
    
Pname(playerid));
    
mysql_query(Conexaoquerytrue);
    return 
1;

Reply
#12

Seja mais proativo, veja a funзгo de carregar a conta que vocк irб saber o complemento do where.
Reply
#13

Acho que vocк quis dizer Nome e nгo Nomes
pawn Code:
WHERE `Nomes`= '%s'
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)